2010-09-10 5 views
2

Sur le bouton Soumettre, je veux désactiver le bouton afin que l'utilisateur ne clique pas plus d'une fois. im en utilisant jquery pour cela, mais sa ne fonctionne pas, mon code estDésactiver le bouton sur soumettre cliquez sur jquery

setTimeout($('#btn').attr("disabled", true), 1); 
return true; 

bouton obtenir désactivé mais mon contrôleur ne remet pas. Qu'est-ce que je fais mal?

+0

pourquoi en utilisant 'setTimeout'? – jAndy

Répondre

7
setTimeout(function() { 
    $('#btn').attr('disabled', 'disabled'); 
}, 1); 
+0

mon code de contrôleur n'appelle pas. c'est comme quand il désactiver le bouton la demande est arrêtée? –

+0

J'ai trouvé que la désactivation d'un bouton dans l'événement click empêche le formulaire soumis dans certaines versions de IE. J'ai posté une solution http://stackoverflow.com/questions/2294041/disable-the-button-after-clicking-the-button-once/4218820#4218820 –

-1

essayez ceci:

setTimeout($('#btn').attr('disabled', 'disabled'), 1); 
return true; 
+0

Vous passez l'objet jQuery à 'setTimeout', IMO, ce n'est pas un callable, ni une chaîne à' eval' :) –

6

Je ne vois pas beaucoup de raisons d'utiliser délai d'attente, je viens d'aller avec

$('#btn').attr('disabled', 'disabled'); 
return true; 

ou plus précisément,

$('#btn').click(function (e) { 
    $(this).attr('disabled', 'disabled'); 
}); 

est tout ce dont vous avez besoin.

Et être un peu méchant et ésotérique: P

return !!$('#btn').attr('disabled', 'disabled'); 

et que, était juste pour le plaisir. Ne le faites pas dans votre code! :)

Modifier: avec une version récente de jQuery, vous pouvez le faire

$('#btn').attr('disabled', true); 
1
setTimeout($('#btn').attr('disabled', 'disabled),1); 
$("#btn").removeAttr('disabled', disabled') 
Questions connexes