Comment puis-je désactiver temporairement un bouton pendant 3 secondes (onsubmit), puis de le ré-activer?
Je suis assez nouveau à l'aide de javascript et voici ce que j'ai à ce jour:
<!-- this is to disable the submit button and then re-enable it after 3 sec -->
<script type="text/javascript">
function enable()
{
var x = document.LAYOUTFORM.getElementById("create_button");
setTimeout(x.removeAttribute("disabled"), 3000);
}
</script>
Et pour le bouton, j'ai ceci:
<INPUT TYPE="SUBMIT" VALUE=" Create PDF " class="FORMBUTTON" ID="create_button" onclick="javascript:this.disabled=true;javascript:enable();">
J'ai foiré avec cela pendant des heures et la plupart d'entre vous le regarder et de savoir quel est le problème immédiatement. Mon formulaire ID et le nom est LAYOUTFORM. Quelqu'un peut-il me dire ce que je fais de mal ici?
Pour les points de bonus je voudrais également que le texte du bouton pour modifier temporairement à "Créer..." alors qu'il est désactivé, et puis de nouveau à Créer un fichier PDF à nouveau.
setTimeout
C'est une belle idée! Je vous remercie.
AmazingChase s'il vous plaît accepter une réponse.
C'est une belle idée! Je vous remercie.
AmazingChase s'il vous plaît accepter une réponse.
OriginalL'auteur AmazingChase | 2012-05-15
Vous devez vous connecter pour publier un commentaire.
Façon la plus simple:
Dans votre javascript:
Ne pas soumettre à Google Chrome...
OriginalL'auteur ninjagecko
Baisse de la LAYOUTFORM entre le document et l'getElementById.
Juste un avis, à l'aide de firebug, chrome developer tools, ou que ce soit l'équivalent outils pour IE, vous pouvez le singe avec votre javascript sur la console. Console.le journal sera également de sortie de texte et même des objets (CDT) que vous pouvez inspecter. Très utile pour explorer 🙂
OriginalL'auteur MushinNoShin
Plusieurs problèmes. Tout d'abord, dans l'attribut onclick, vous utilisez javascript: qui est pour les Url. Des trucs à l'intérieur de l'attribut onclick est déjà évalué comme du code. Deuxièmement, le code dans votre setTimeout doit être de chaîne ou un nom de fonction. Vous devriez faire quelque chose de plus comme ceci:
HTML:
JavaScript:
Bon, content que ça a fonctionné. Vous pouvez supprimer ce commentaire précédent en passant la souris dessus et en appuyant sur la petite croix.
OriginalL'auteur D. Strout
Vous pouvez accéder au bouton, soit par
id
qui est unique au mondeou par le
name
unique pour l'affichage de la formeDonc, vous devez soit
ou
(En supposant que create_button_name est le nom du bouton:
)
Le premier paramètre de la setTimeout devrait être une fonction:
BTW, HTML n'a pas besoin d'être (et ne doit pas être, pour des raisons de lisibilité, etc) tout en majuscules.
OriginalL'auteur Nivas
Il y a deux principaux problèmes avec votre JavaScript:
La
.getElementById()
méthode appartient àdocument
, pas à votre formulaire (ou à tout autre élément.setTimeout()
attend le premier paramètre à une fonction (ou d'une chaîne, mais il n'y a presque jamais une situation lors de l'utilisation d'une chaîne de caractères est le cas).Essayez ceci:
Comme vous pouvez le combiner la désactivation et la réactivation en une seule fonction:
Notez que vous n'avez pas besoin d'utiliser
.removeAttribute()
, vous pouvez simplement régler le.disabled
directement la propriété (comme si vous étiez déjà en train de faire lorsque vous avez désactivé l'élément).EDIT: Viens de voir les "points bonus" partie de votre question. Vous avez juste besoin de mettre le
.value
propriété:OriginalL'auteur nnnnnn
http://www.webdeveloper.com/forum/showthread.php?164239-Temporarily-Disable-Submit-Button
OriginalL'auteur Pablo Pazos