2009-12-27 1 views
0

Je me demandais comment vous pouvez désactiver le bouton (ne pas soumettre) avec jQuery alors qu'un formulaire ne valide pas avec jQuery validate, mais quand il valide, activé le bouton.Comment désactiver un bouton alors qu'un formulaire ne valide pas avec jQuery validate?

+0

S'il vous plaît élaborer ce que vous voulez demander ?? Vous demandez quelque chose comme ceci: Il y a un formulaire ayant un bouton de validation, une fois que le formulaire a été validé vous voulez activer un bouton "NEXT" sinon ce bouton "NEXT" est désactivé .. ou vous demandez autre chose ... !!! –

+0

Oh ouais, mon mauvais. Le formulaire a un bouton qui exécute simplement certains JS, mais il doit être désactivé jusqu'à ce que le formulaire valide. Le bouton commence désactivé, et a juste besoin de jQuery valider le code pour l'activer une fois que le formulaire entier valide. –

Répondre

0
$('#button').attr('disabled', 'disabled'); 
$("#myform").validate(); 
$("#submit").click(function() { 
    if ($("#myform").valid()) 
     $('#button').removeAttr('disabled'); 
}); 
+0

merci! En fait, je l'ai lié à la méthode de flou, ça marche tout aussi bien, sauf qu'il ne nécessite pas de bouton supplémentaire! –

0

C'est un peu difficile à faire. Ce que je vous suggère d'essayer un événement est contraignant change():

$(":input").change(function() { 
    $('#formid").validate(); 
    if ($("#formid").valid()) { 
    $("#buttonid").removeAttr("disabled"); 
    } else { 
    $("#buttonid").attr("disabled", true); 
    } 
}); 

La faiblesse de cette méthode est que, par exemple, si un champ de texte ne peut pas être vide l'événement change() ne sera pas tiré jusqu'à ce qu'il perde faites la mise au point pour que le bouton ne soit pas grisé. Si cela est important pour vous, vous pouvez ajouter un événement keydown().

+0

Petite faute de frappe - Je pense que la ligne 5 devrait être '... removeAttr ...' Aussi, s'il y a un changement que vous ajouterez dynamiquement des champs de saisie, vous pouvez utiliser la méthode jquery "live" plutôt que "changer" attacher un liste à tous les champs d'entrée, même ceux ajoutés après le chargement de la page. –

Questions connexes