2010-01-21 6 views
2

ci-dessous est mon code la validation ne fonctionne que sans la validation à distance. une fois que j'inclus la validation à distance, il soumet le formulaire sans remplir toutes les autres validations de formulaire?La validation à distance

$(document).ready(function() { 


     $("#form1").validate({ 
      rules: { 
       firstName: "required",// simple rule, converted to {required:true} 
       lastName: "required", 
       email: {// compound rule 
         required: true, 
         email: true, 
         success: "valid", 
         remote: "checkAddress.php" 
       },  
       password: { 
        required: true, 
        success: "valid", 
        minlength: 5 
       }, 

       verify: { 
        required: true, 
        success: "valid", 
        minlength: 5, 
        equalTo: "#password" 
       }, 
       address1: "required", 
       city: "required", 
       province: "required", 

       dob: { 
        required: true, 
        date: true, 
        success: "valid" 
       }, 


       captcha_code: { 
        required: true, 
        captcha_code: true, 
        remote: "checkCaptcha.php"  
       } 

      }, 
      messages: { 
       email:{ 
        remote: "This email is already registered! One registration per email address." 
       }, 
       captcha_code:{ 
        remote: "Enter the right captcha value!." 
       } 
      }, 
      onsubmit: true 
     }); 
    }); 

Répondre

1

Ce que je demandais était si vous avez implémenté captcha_code comme méthode? au captcha_code: true,.

captcha_code: { 
     required: true, 
     captcha_code: true, 
     remote: "checkCaptcha.php"  
} 

Vous aimez cette

jQuery.validator.addMethod("captcha_code", function(value, element) { 
    return (this.optional(element) || /* do something */); 
}, ""); 

J'ai trouvé cette démo captcha et il n'a pas captcha_code comme méthode, nécessaire uniquement et à distance. Donc je pensais si vous l'avez implémenté.

Voici le script de la démo. http://jquery.bassistance.de/validate/demo/captcha/

$(function(){ 
$("#refreshimg").click(function(){ 
    $.post('newsession.php'); 
    $("#captchaimage").load('image_req.php'); 
    return false; 
}); 

$("#captchaform").validate({ 
    rules: { 
     captcha: { 
      required: true, 
      remote: "process.php" 
     } 
    }, 
    messages: { 
     captcha: "Correct captcha is required. Click the captcha to generate a new one" 
    }, 
    submitHandler: function() { 
     alert("Correct captcha!"); 
    }, 
    success: function(label) { 
     label.addClass("valid").text("Valid captcha!") 
    }, 
    onkeyup: false 
}); 

});

+0

ce qui est "captcha_code: true," pour? – Reigel

+0

ah, je n'ai jamais mis en œuvre "captcha_code: true" je pensais que c'est comment c'est fait en jquery. Je suis très nouveau à jquery, donc j'ai juste pensé que c'est comme ça. Peut-être que c'est où l'erreur est? – NULL

+0

essayez de le sortir ... "captcha_code: true,", je pense que cela fonctionnera parfaitement ... ou laissez-moi savoir ce que vous essayez de faire avec ça. – Reigel

0

L'URL distante est frappé passer la valeur du champ auquel il attend un JSON VRAI/FAUX en retour, êtes-vous dans celui-ci?

+0

oui j'ai déjà un json vrai/faux. étrangement ma forme omet le reste de la validation. je n'arrive pas à trouver la raison? – NULL

+0

qu'en est-il de mettre cet header ('Content-type: application/json'); puis echo $ output; Je pense que json_encode retourne un tableau dans la forme ... – Reigel

+0

fondamentalement, si un utilisateur entre une valeur pour "email" et le captcha, il omet le reste de la validation du formulaire, et le formulaire soumet. peut-être que la validation à distance n'est pas efficace dans jquery. voici l'erreur que je reçois: Erreur: $ .validator.methods [méthode] est non défini sur la ligne 471 de jquery.validator – NULL

0

donc je changé:

email: {// compound rule 
        required: true, 
        email: true, 
        success: "valid", 
        remote: "checkAddress.php" 
      }, 
captcha_code: { 
       required: true, 
       captcha_code: true, 
       remote: "checkCaptcha.php"  
      } 

à

email: {// compound rule 
        required: true,     
        remote: "checkAddress.php" 
      }, 
captcha_code: { 
       required: true, 
       remote: "checkCaptcha.php"  
      } 

il fonctionne très bien, wow, les gars rock !!!

Questions connexes