2013-03-23 3 views
5

Ich versuche, mit benutzerdefinierten Validierung in Jquery zu arbeiten. Der ganze Codierungsteil ist richtig, aber ich verstehe nicht, wo es falsch läuft ... hier ist der Teil des Codes.Benutzerdefinierte Methode mit jQuery Validierungs-Plugin

Password:<input type="password" id="pnameTxt" name="pnameTxt" placeholder="Enter Password" size=12 class='required'><br> 
Confirm Password:<input type="password" id="pnameTxt2" name="pnameTxt2" placeholder="Retype Password" size=15 class='required passwordCheck'><br> 

Benutzerdefinierte Validierungsmethode:

$.validator.addMethod("passwordCheck",function (value,element){ 
      return value==$("#pnameTxt").val(); 

     }, 'Password and Confirm Password should be same'); 
+2

Keine Notwendigkeit, eine eigene Methode zu schreiben. Verwenden Sie einfach die 'equalTo'-Regel. Siehe: http://docs.jquery.com/Plugins/Validation/Methods/equalTo#other – Sparky

Antwort

1

Haben u die Validierung Plugin korrekt initialisiert? Wenn ich die html in eine form und dann initialize the plugin setze, funktioniert es wie erwartet.

<form id="test"> 
Password:<input type="password" id="pnameTxt" name="pnameTxt" placeholder="Enter Password" size=12 class='required'><br> 
Confirm Password:<input type="password" id="pnameTxt2" name="pnameTxt2" placeholder="Retype Password" size=15 class='required passwordCheck'><br> 
<input type="submit"> 
</form> 
$.validator.addMethod("passwordCheck",function (value,element){ 
     return value==$("#pnameTxt").val(); 

    }, 'Password and Confirm Password should be same'); 

$('#test').validate(); 
+0

wo muss ich setzen $ ('# test'). Validate(); –

+0

Als Inline-Code in derselben Datei, in der sich Ihr Formular befindet, oder mit einem Verweis auf eine externe js-Datei. Und legen Sie es in '$ (Dokument) .ready (function() { // Ihr Code });' um sicherzustellen, dass das Formular geladen wird, wenn Sie das Plugin aufrufen. –

34

Ihr Code funktioniert. Sie müssen die Regel auch Ihrem Feld zuweisen, wenn Sie das Plugin mit .validate() initialisieren.

Arbeiten DEMO: http://jsfiddle.net/KrLkF/

$(document).ready(function() { 

    $.validator.addMethod("passwordCheck", function (value, element) { 
     return value == $("#pnameTxt").val(); 
    }, 'Password and Confirm Password should be same'); 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      pnameTxt2: { 
       passwordCheck: true 
      } 
     } 
    }); 

}); 

JEDOCH, brauchen Sie nicht eine benutzerdefinierte Methode für diese Funktionalität zu schreiben. Das jQuery Validate-Plugin hat bereits eine equalTo rule, und hier ist, wie man es benutzt.

Arbeiten DEMO: http://jsfiddle.net/tdhHt/

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      pnameTxt2: { 
       equalTo: "#pnameTxt" // using `id` of the other field 
      } 
     }, 
     messages: { 
      pnameTxt2: { 
       equalTo: "Password and Confirm Password should be same" 
      } 
     } 
    }); 

});