J'ai un script JQuery pour exécuter la gâchette de soumission automatique sur la charge de la page Et il s'exécute à plusieurs reprises, je veux faire un bouton Tigger une fois que la page est chargée
code HTML fort> p> merci d'avance. p> p>
3 Réponses :
jQuery .one () attache un gestionnaire qui s'exécute au plus une fois par élément et par événement. Ainsi, au lieu de .click () , vous pouvez dire
$(this).attr('disabled',true)
Vous pouvez en savoir plus sur Documentation de jQuery pour .one () .
Puisque vous voulez soumettre le chargement sur la page, laissez-le contourner comme ceci:
` /* Any code you will like to execute onSubmit*/`
Après la première exécution, essayez de cliquer sur le bouton, vous remarquerez que le code dans le gestionnaire de clics ne sera pas exécuté à nouveau, ce que je pense être ce que vous voulez afin que vous puissiez également désactiver le bouton dans ce gestionnaire de clics. Donc, là où nous avons
$(document).ready(function(){
const autSubmit =$(this).find("input[type='submit']);
autSubmit.one('click',function(){
/* Any code you will like to execute onSubmit*/ });
autSubmit.trigger('click');});
ci-dessus, vous pouvez simplement le remplacer par
`.one('click', function() { ... })`.
Pour que le bouton soit vraiment désactivé mais que le la vérité est qu'après le premier clic, le gestionnaire de clics sur le bouton ne se déclenchera plus.
Salut, je suis un programmeur débutant, pouvez-vous expliquer cela avec ma ligne de codes, je suis fatigué comme ceci mais fonctionne toujours comme une boucle
Ok, permettez-moi de modifier ma réponse et de la rendre plus compréhensible.
c'est ce dont j'ai besoin il y a un lien sur la page principale lorsque je clique sur le lien, il me redirige vers une nouvelle page sur cette page la jquery devrait tigger une entrée = soumettre pour déclencher une action dans le contrôleur en mvc les codes que j'ai essayés jusqu'à présent faire le même travail, mais lorsque l'événement de clic est déclenché, la page est actualisée pour afficher la sortie et je pense que cette publication provoque l'exécution répétée de jQuery en supposant que son chargement de page est
Le comportement naturel des boutons Soumettre sous une forme tente d'accéder au serveur comme spécifié dans vous action code> dans le formulaire code> dans la balise code> dans le gestionnaire de clic, utilisez simplement l'événement code> objet pour arrêter d'empêcher ce comportement afin que vous puissiez le gérer comme vous le souhaitez. Comme ceci: `fonction (événement) {événement.preventdefault (); / * Votre code-code-gérant-envoi de serveur * /} Un appel AJAX envoiera ce que vous souhaitez envoyer sans rafraîchir la page et le bouton ne sera pas cliquable une fois une fois
Script> $ (document) .Ready (fonction (fonction () {const aut dsubmit = $ (ceci) .Find ("entrée [TYPE = 'SOUMET' SOUMET ']"); AUTSUBMIT.One ("Cliquez sur" Fonction () {// $ $ (this) .Attr ('désactivé', true) événement.preventDefault ();}); aut consuble.trigger ("click");}); script> essayé tous les deux en boucle encore
Ok le problème. Est-ce que la page s'actualise pour que le bouton devienne un nouveau sur lequel on peut cliquer une fois à chaque fois que je peux simplement naviguer vers une autre page dans le gestionnaire en utilisant location.href = / * one-of-your-routes * / < / code> de cette façon, le script ne peut pas s'exécuter et le bouton ne sera plus cliqué. Il y a une question similaire comme celle-ci, essayez de lire ce que d'autres personnes ont dit à propos de ce problème stackoverflow.com/questions/45780828/...
a enfin fait fonctionner le code
window.onload = function () {
if (localStorage.formSubmitted !== 'true')
{
localStorage.setItem("formSubmitted", "true");
document.getElementById('sub').click();
}
else
{
localStorage.removeItem("formSubmitted");
}
}
</script>
merci à tous pour votre aide
aussi je pense qu'il vaut mieux utiliser session dans le même but window.onload = function () {
if (sessionStorage.formSubmitted !== 'true')
{
sessionStorage.setItem("formSubmitted", "true");
document.getElementById('sub').click();
}
else
{
sessionStorage.removeItem("formSubmitted");
}
}
</script>
Veuillez vous assurer que vous n'avez pas plus d'un bouton avec son identifiant contenant le mot «sous».
Je n'ai qu'un bouton avec id = sub merci
Alors pourquoi ne pas simplement faire
$ ('# sub'). Click ()ou$ ('# sub'). Trigger ('click')?a essayé de fonctionner mais l'événement fonctionne toujours comme une boucle