2009-07-18 9 views
1

Mes excuses si vous avez déjà vu cela ou répondu à lui mais je n'arrive pas à trouver la question que j'ai soumis à l'origine et je suis désespéré pour une solution.Valider le plugin - en utilisant le submitHandler

Je dois afficher un message promotionnel lorsque l'utilisateur clique sur soumettre si répond à certains critères concernant son code postal. J'ai entendu que vous devrait utiliser le submitHandler mais étant complètement nouveau à JavaScript et même plus récent à JQuery je suis un peu bloqué sur la façon dont je devrais écrire cela. Je pensais que ce serait quelque chose comme ça, mais de toute évidence, cela ne fonctionne pas.

submitHandler: function(form) { 
        var special = /^[T]{1}[A]{1}([1-13|17|25]){2}/.test(value); 
        if (special); 
        alert('You have been entered into a competition to win a special prize'); 
        form.submit(); 
      }, // end of submitHandler 

J'ai besoin essentiellement ce message à afficher quand ils cliquez sur soumettre et ils confirment et la forme va au serveur.

Ceci est le code que j'ai jusqu'à présent pour la validation:

$(document).ready(function(){ 
$("#orderForm").validate({ 
      onfocusout: function(element) { 
        this.element(element); 
      }, 
      rules: { 
        firstName: { 
          required: true, 
        }, 
        surname: { 
          required: true, 
        }, 
        phoneNumber: { 
          required: true, 
        }, 
        streetName: { 
          required: true, 
        }, 
        city: { 
          required: true, 
        }, 
        postalCode: { 
          required: true, 
          shipPostalCode: true, 
        }, 
        billEmailAddress: { 
          required: true, 
        }, 
        billPhoneNumber: { 
          required: true, 
        }, 
        promoCardNumber: { 
          required: true, 
          fidelityCardNumber: true, 
        }, 
        billCardNumber: { 
          required: true, 
        }, 
        billCardType: { 
          required: true, 
        }, 
      }, //end of rules 
    }); // end of validate 
    }); // end of function 


$.validator.addMethod('postalCode', function (value) { 
      return /^[A-Z]{2}\d{1,2}\s\d{1}[A-Z]{2}$/.test(value); 
      }, 'Please enter a valid postcode'); 
$.validator.addMethod('promoCardNumber', function (value) { 
      return /^[A-Z]{1}([A-Z]|\d){4}\s?([A-Z]|\d){5}\s?([A-Z]|\d){3}\d{1}$/.test (value); 
      }, 'Please enter a valid card number'); 

Ceci est mon code html:

<form id="orderForm" method="post" action="x"> 
    <table id="formTable" cellpadding="5"> 
    <tr> 
     <td> 
     <h3>Shipping and Billing Information</h3> 
     </td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td><label for="firstname">First Name</label></td> 
     <td><input id="firstName" type="text" name="firstName" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="surname">Surname</label></td> 
     <td><input id="surname" type="text" name="surname" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="phoneNumber">Contact Telephone Number</label></td> 
     <td><input id="phoneNumber" type="text" name="phoneNumber" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="streetName">Street Name</label></td> 
     <td><input id="streetName" type="text" name="streetName" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="city">City</label></td> 
     <td><input id="city" type="text" name="city" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="postalCode">Post Code</label></td> 
     <td><input id="postalCode" type="text" name="postalCode" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="billEmailAddress">Email address</label></td> 
     <td><input id="billEmailAddress" type="text" name="billEmailAddress" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="billPhoneNumber">Contact Telephone Number</label></td> 
     <td><input id="billPhoneNumber" type="text" name="billPhoneNumber" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="promoCardNumber">Promotional Card</label></td> 
     <td><input id="promoCardNumber" type="text" name="promoCardNumber" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="billCardNumber">Credit Card Number</label></td> 
     <td><input id="billCardNumber" type="text" name="billCardNumber" maxlength="30" /></td> 
    </tr> 
    <tr> 
     <td><label for="billCardType">Credit Card Type</label></td> 
     <td><select id="billCardType" name="billCardType"> 
     <option value="..."> 
      Choose your card... 
     </option> 
     <option value="visa"> 
      Visa 
     </option> 
     <option value="mastercard"> 
      Mastercard 
     </option> 
     </select></td> 
    </tr> 
    <tr> 
     <td><label for="instructions">Instructions</label></td> 
     <td> 
     <textarea id="instructions" name="instructions" rows="8" cols="30"> 
Enter your requirements here or comments. </textarea></td> 
    </tr> 
    <tr> 
     <td colspan="2"><input id="submit" type="submit" name="Submit" value="Submit" /> 
       </td> 
    </tr> 
    </table> 
</form> 

Répondre

1

Je pense que votre question initiale (ainsi que ma tentative de réponse) est ici: JQuery and validate plugin - how to add a promotional message on submit

+0

Ah oui valider ({ submitHandler, vous avez écrit, [code] $ ("# OrderForm"). fonction (formulaire) { // code pour afficher un message personnel Code // pour gérer la soumission du formulaire }, onfocusout: function (element) {... [/ code] Comme vous pouvez le voir j'ai essayé de l'écrire, mais je vraiment Je n'ai pas la moindre idée de comment je devrais le coder. J'ai les éléments qui doivent juste être assemblés. –

+0

Où avez-vous placé la méthode submitHandler? Cela devrait faire partie de l'objet que vous passez à $ ("# orderForm"). Validate. Dans votre méthode submitHandler, vous voudrez probablement appeler $ (form) .ajaxSubmit(); (si vous utilisez le plugin de formulaire jQuery) plutôt que form.submit() car (je pense) le plugin Validation annule le comportement d'envoi par défaut, donc l'appel à form.submit() ne ferait que re-déclencher la validation. – Rojo

+0

J'ai mis le gestionnaire de soumission sous les autres règles que j'ai, mais avant de fermer les règles. La console d'erreur n'aime pas cela et dit que j'ai une erreur de syntaxe. Devrais-je le mettre après les règles? –

Questions connexes