5 Stimmen

jQuery Validator's "erforderlich" funktioniert nicht, wenn der Wert bei statup gesetzt wird

Ich habe ein Problem mit jQuery Validator. Ich möchte "erforderlich" Eigenschaft auf eine Texteingabe verwenden. Es funktioniert nicht, wenn die Eingabe Wert-Attribut durch HTML-Code festgelegt hat (getestet auf Firefox (3.5) und auf IE 8 - auf IE es funktioniert ein bisschen besser).

Die Geschichte: 1. Seite wird geladen; 2. Wert wird gelöscht; 3. der Fokus wird geändert. 4. Es passiert nichts, aber die Fehlermeldung sollte angezeigt werden; 5. Zurück zum Feld gehen und einige Zeichen eingeben. 6. Ändern des Fokus; 7. Zurückkehren zum Feld; 8. Leeren des Feldes. 9. Der Fehler wird bereits vor dem Verlassen des Feldes angezeigt.

Der HTML-Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <script src="Web/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
    <script src="Web/Scripts/jquery.validate.js" type="text/javascript"></script>    
</head>
<body>
    <form id="form1">
        <input type="text" id="name1" name="name1" value="test" /><br />
        <input type="text" />
    </form>

    <script type="text/javascript">
        $(document).ready(function() {
            var validator = $("form").validate({

                rules: {
                    name1: {
                        required: true,
                        minlength: 2
                    }
                },
                messages: {
                     name1: "bad name"
                },
            });
        });
    </script>
</body>
</html>

8voto

Nick Craver Punkte 609016

Sie können die onfocusout Handler, damit dies so funktioniert, wie Sie es wünschen (eifriger):

$(function() {
    var validator = $("form").validate({
        rules: { name1: { required: true, minlength: 2 } },
        messages: { name1: "bad name" },
        onfocusout: function(element) { $(element).valid(); }
    });
});

Sie können die alte defekte Demo (wie Ihre Frage) hier und die aktualisiert mit onfocusout das hier funktioniert .

1voto

vladimir Punkte 11106

Für eine unauffällige Validierung, wenn Ihr Validator bereits definiert wurde, muss Michel die Antwort ändern:

var validator = $('form').validate();

validator.settings.onfocusout = function(element) {
    $(element).valid();
};
/*validator.settings.onkeyup = function (element) {
    $(element).valid();
};*/

0voto

Michel Punkte 22429

Sie haben vergessen zu sagen, für welche Validierung die Nachricht bestimmt ist: Versuchen Sie dies:

 messages: { 
             name1:
                   {
                      required : "This is a required field",
                     minlength: "Please enter 2 chars or more"
                   }
            }

Michel

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X