Comment valider un tas de champs qui ne sont pas entourés par une balise FORM à l'aide de jquery validate?
Réponses
Trop de publicités?Je sais que j'ai manqué la fête ici, mais je suis tombé sur cette question récemment, et a constaté que la façon la plus simple d'accomplir ce fut à l'aide de jQuery d' enrouler et de dérouler des méthodes dans le bouton "soumettre" onclick du gestionnaire. Ces méthodes, il est facile de créer dynamiquement et de détruire la balise form jQuery valider l'extension a besoin pour fonctionner.
Par exemple,
jQuery( '#my_submit_button' ).on( 'click', function()
{
jQuery( '#my_container' ).wrap( '<form id="temp_form_id" />' );
var isValid = jQuery( '#temp_form_id' ).valid();
jQuery( '#my_container' ).unwrap();
if ( isValid )
{
// Do your thing.
}
} );
C'est seulement un peu de travail supplémentaire et ne nécessite aucune modification de balisage existant-mais il est encore aggravante.
Vous pouvez le faire avec le plugin jQuery Validity, je l'utilise dans mon application MVC. Jetez un coup d'œil au lien ci-dessous, bien que UsingValidityWithAjax soit un peu abusif, vous pouvez l'utiliser dans votre scénario.
http://validity.thatscaptaintoyou.com/Demos/index.htm#UsingValidityWithAjax
Vous ne serez pas en mesure d'obtenir les mêmes effets avec jquery valider si vous n'avez pas une balise de formulaire.
Vous pouvez tenter quelque chose comme ce qui suit
fonction testValidationNoForm() { var nameValue = jQuery("#cname"); var isValid = $("<form action=" name=" "><input name= "name" class= "requis" minlength='2' value='" + nameValue.val() + "'/></form>").valide(); alert('isValid =' + isValid); }
Alors là, vous êtes en train de construire le formulaire à la volée et d'obtenir le message valide.
D'accord avec @Shaun F, vous devez avoir votre champs clos par l' <form>
balise. La partie la plus cool sur le cadre, toutefois, est qu'il vous permet de contourner l'ensemble de l' form action
d'affaires et de définir votre propre submitHandler
. En fait, il est conseillé façon de faire de l'ajax soumet après validation (l'emphase est mienne):
submitHandler [...] Rappel pour la manipulation du réel soumettre lorsque le formulaire est valide. Obtient la forme comme seul argument. Remplace la valeur par défaut soumettre. Le bon endroit pour soumettre un formulaire via Ajax après avoir validé.
Plus d'infos ici: http://docs.jquery.com/Plugins/Validation/validate#toptions