2010-10-13 7 views
4

J'ai un élément de sélection de liste déroulante de catégorie dans mon formulaire. Le formulaire est validé avec jQuery comme suit:jQuery Valider: Pas la valeur par défaut

$('#myForm').validate({ 
    rules: { 
     text: { 
       required: true 
     }, 
     category: { 
      required: true 
     } 
    }, 
    messages: { 
     text: { 
      required: "Text required" 
     }, 
     category: { 
      required: "Category required" 
     } 
    } 

Lors du chargement de la page, la valeur par défaut de la catégorie est: « --- » (sans les guillemets). Quand je soumets le formulaire, la validation dit que tout va bien, parce que '---' n'est pas rien. Comment puis-je l'empêcher d'envoyer quand '---' est utilisé comme catégorie? Les autres catégories sont quelque chose comme ceci: Catégorie1. Une des possibilités doit être choisie et je ne peux pas changer la sélection de la liste déroulante.

Merci!

Répondre

13

Vous pouvez ajouter une règle personnalisée, comme ceci:

jQuery.validator.addMethod("notEqual", function(value, element, param) { 
    return this.optional(element) || value !== param; 
}, "Please choose a value!"); 

Ensuite, utilisez cette règle dans votre rules, comme ceci:

category: { 
     required: true, 
     notEqual: "---" 
    } 

You can test it out here.

+0

Merci beaucoup pour la réponse rapide !! – koko

+0

Salut, j'ai besoin de cela pour être en mesure d'afficher un message personnalisé (PAS: "S'il vous plaît choisir une valeur!"). Comment pourrais-je le passer dans ceci? Toute aide serait très appréciée!. – Anil

+0

Vous pouvez simplement changer le texte "S'il vous plaît choisir une valeur!" à quelque chose d'autre, non? – koko

0

J'ai utilisé le plugin de http://jqueryvalidation.org/ en vue MVC et modifié comme suit:

Note: L'utilisation lorsque l'option menu déroulant -> Valeur: 0, texte: --Sélectionnez--

- > ajouter type requis sur mesure

//====find "message {: ..." 
messages: { 
    required: "This field is required.", 
    remote: "Please fix this field.", 
    email: "Please enter a valid email address.",.... 

//====modify to 
messages: { 
    noDefaultVal: "This field is required.", //<-- modified 
    required: "This field is required.", 
    remote: "Please fix this field.", 
    email: "Please enter a valid email address.",.... 

-> ajouter méthode requise personnalisée

//====and find "methods: {: ..." 
methods: { 
    // http://docs.jquery.com/Plugins/Validation/Methods/required 
    required: function(value, element, param) { 
    // check if dependency is met 
    if (!this.depend(param, element)) {.... 

//====modify to 
methods: { 
    noDefaultVal: function (value, element, param) { 
     return this.optional(element) || value != param; 
    }, 
    // http://docs.jquery.com/Plugins/Validation/Methods/required 
    required: function(value, element, param) { 
    .... 

-> sur la page de script

$("#frmSave").validate({ 
    //set required fields 
    rules: { 
    ITEM_TYPE: { 
     required: true , 
     noDefaultVal: "0" 
    } 
    } 
}); 

Regard.

Questions connexes