jquery-Validierung: submit-button nur dann aktiviert, wenn alle beobachteten Elemente überprüfen

Beobachten mehrere Elemente in einem Formular möchte ich aktivieren den submit-button nur, wenn alle Elemente erfolgreich zu validieren. Hier ist, was ich versucht habe:-

$('#beta_signup_form').validate({
    rules: {
        name: {
            required: true,
            minlength: 4
        },
        email: {
            required: true,
            email: true 
        }
    },
    focusCleanup: true,
    onkeyup: false,
    errorElement: "span",
    submitHandler: function(form) {
        if ($('#beta_signup_form').valid()) {
            console.log("now we enable the submit button!");
        }   
    }

});

UPDATES

Ich hatte erwartet, die submitHandler ausgelöst werden und die, wenn if ($('#beta_signup_form').valid()) Bedingung zu prüfen, dass alle unsere Felder sind gültig, bevor wir aktivieren die Schaltfläche senden, so dass der Benutzer klicken Sie auf es, um einen ajax-Aufruf, das Formular zu senden.

Aber irgendwie, nichts wird ausgelöst, wenn alle Felder gültig sind.

Habe ich herausgefunden, was ich immer falsch und das ist der submitHandler Attribut hat nichts zu tun mit der Aufdeckung der "alle Felder validiert" Ereignis. Die submitHandler Attribut nur gefeuert wird wenn ich auf meine Schaltfläche Formular, das ist nicht das, was ich brauche.

Also meine Frage ist - was ist das Ereignis brauche ich, um zu binden? Ist es ein Attribut, das verwendet werden kann für die Einstellung eines triggers, wenn alle Felder im Formular überprüfen?

Hier ist das Formular-html-code:-

    <form id="beta_signup_form" postUrl="{% url 'signups_beta_users' %}" method="post" csrf_token="{{ csrf_token }}">{% csrf_token %}
        <div>
            <input type="text" id="name" name="name" placeholder="Name" />
        </div>
        <div>
            <input type="email" id="email" name="email" placeholder="Email address" />
        </div>
        <button class="btn btn-success" type="submit" id="request-trial" href="#request-for-free-trial">Notify Me</button>
        <div class="loading"></div>
    </form>
  • Dieser link sollte Ihnen weiterhelfen: stackoverflow.com/questions/882406/...
  • Ja. Ich lese über diese, aber es funktioniert nicht für mehrere Felder. Die success event wird ausgelöst, moment 1-Feld wird überprüft, während der rest der Felder sind noch leer, das ist nicht gut genug für meine Zwecke. Ich muss trigger "aktivieren der Schaltfläche" Ereignis nur wenn ALLE Felder auf dem Formular zu überprüfen.
  • Sie müssen nicht um bedingt überprüfen $('#beta_signup_form').valid() innerhalb der submitHandler. Durch die definition, die form ist schon gültig, wenn der code innerhalb submitHandler Funktion ausgelöst wird. Siehe: jsfiddle.net/tCpXT/2
InformationsquelleAutor Calvin Cheng | 2012-12-07
Schreibe einen Kommentar