2013-03-23 3 views
5

Sto cercando di lavorare con la convalida personalizzata in Jquery. Tutta la parte del codice è giusta, ma non riesco a capire dove sta andando male ... ecco la parte del codice. metodo di convalidaMetodo personalizzato con jQuery Plugin di convalida

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> 

personalizzato:

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

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

Non c'è bisogno di scrivere un metodo personalizzato. Basta usare la regola 'equalTo'. Vedi: http://docs.jquery.com/Plugins/Validation/Methods/equalTo#other – Sparky

risposta

1

U hanno inizializzato il plugin di convalida correttamente? Quando inserisco l'html in un form e poi nello initialize the plugin funziona come previsto.

<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

dove devo inserire $ ('# test'). Validate(); –

+0

Come codice inline nello stesso file in cui si trova il modulo o con un riferimento a un file js esterno. E posizionalo all'interno di '$ (document) .ready (function() { // Your code });' per essere sicuro che il modulo sia caricato quando chiami il plugin. –

34

Il codice funziona. Devi anche assegnare la regola al tuo campo quando inizializzi il plugin con .validate().

demo funzionante: 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 
      } 
     } 
    }); 

}); 

TUTTAVIA, non è necessario scrivere un metodo personalizzato per questa funzionalità. Il plugin jQuery Validate ha già un equalTo rule, ed ecco come usarlo.

demo funzionante: 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" 
      } 
     } 
    }); 

});