2009-10-05 6 views
1

J'utilise jquery-1.3.2.js avec le plugin jquery.validate.js et j'utilise le code suivant pour essayer de valider un champ de temps optionnel.jQuery Validator, Regex et null

$.validator.addMethod('time', function(value) { 
    return /(^([0-9]|[0-1][0-9]|[2][0-3]):([0-5][0-9])(\s{0,1})(AM|PM|am|pm|aM|Am|pM|Pm{2,2})$)|(^([0-9]|[1][0-9]|[2][0-3])(\s{0,1})(AM|PM|am|pm|aM|Am|pM|Pm{2,2})$)/.test(value); 
}, 'Please enter a valid time in the format of mm:hh am'); 

    $.validator.addClassRules({ 
    time: { 
     required: true, 
     time: true 
    }, 
    timeOptional: { 
     required: false, 
     time: true 
    } 

}); 

Quand j'ajoute une classe à mon champ de saisie qui est de « timeOptional », et je ne rentre rien dans la zone de texte, lorsque le formulaire est soumis, je reçois le message « S'il vous plaît entrer une heure valide dans la format de mm: hh am. "

Comment puis-je modifier cela afin que le formulaire permettra de soumettre une valeur nulle dans cette zone de texte?

Répondre

0

Vous pouvez ajouter un {0,1} à la fin de l'expression rationnelle de l'ensemble du groupe pour indiquer 0 ou 1 entrées.

+0

Je crains d'être un peu lent en ce qui concerne la regex. Je ne pouvais pas faire fonctionner ça. Il accepterait une zone de texte vide, mais il a fini par accepter autre chose aussi. J'ai fini par faire une autre fonction en utilisant la regex d'origine mais j'ai ajouté if (value == "") return true; sinon renvoyer l'expression rationnelle – Deke