113 votes

Comment annuler la soumission du formulaire dans l'événement onclick du bouton de soumission ?

Je travaille sur une application web ASP.net.

J'ai un formulaire avec un bouton d'envoi. Le code pour le bouton d'envoi ressemble à .

Je veux écrire quelque chose comme ce qui suit:

function btnClick() {
    if (!validData())
        cancelFormSubmission();
}

Comment puis-je faire cela?

0 votes

Aïe, ça me donne mal à la tête. J'ai plusieurs entrées différentes de submit. Je pense que je vais essayer d'utiliser des contrôles côté serveur sur cette page.

2 votes

207voto

alex Points 186293

Vous feriez mieux de faire...

Si isValidForm() retourne false, alors votre formulaire ne se soumet pas.

Vous devriez probablement aussi déplacer votre gestionnaire d'événements à l'extérieur en ligne.

document.getElementById('my-form').onsubmit = function() {
    return isValidForm();
};

0 votes

Agréable, mais il semble que je ne peux pas faire fonctionner onsubmit chaque fois que j'utilise ASP.net parce qu'ASP.net enveloppe TOUT dans son propre formulaire...

8 votes

Vous pouvez utiliser sa deuxième suggestion. Le javascript en ligne est de toute façon le diable.

3 votes

Si vous utilisez des formulaires web ASP.NET (conseil : ne le faites pas), alors ne tentez pas d'inclure d'autres formulaires. Ils sont tout simplement incompatibles. J'entends dire qu'ASP.NET MVC vous permet de construire des applications web en utilisant un balisage idiomatique.

47voto

Freyday Points 1002

Changez votre entrée en ceci:

Et renvoyez false dans votre fonction

function btnClick() {
    if (!validData())
        return false;
}

16voto

Quentin Points 325526

Vous devez changer

onclick='btnClick();'

à

onclick='return btnClick();'

et

cancelFormSubmission();

à

return false;

Cela dit, je recommande d'éviter les attributs événementiels intrinsèques au profit du JavaScript non intrusif avec une bibliothèque (comme YUI ou jQuery) qui a une bonne API de gestion d'événements et de se connecter à l'événement qui importe vraiment (c'est-à-dire l'événement de soumission du formulaire au lieu de l'événement de clic du bouton).

4 votes

En utilisant onclick permettra à l'utilisateur de cliquer sur Entrée et de contourner la vérification.

6voto

Mohammed Points 21

Vous devriez changer le type de submit à button :

au lieu de

vous pouvez ensuite obtenir le nom de votre bouton en javascript et associer l'action que vous souhaitez lui donner

var btn = document.forms["frm_name"].elements["btn_name"];
btn.onclick = function(){...};

cela a fonctionné pour moi j'espère que cela vous aidera.

2voto

George Johnston Points 17237

Pourquoi ne pas changer le bouton de soumission en un bouton régulier, et sur l'événement de clic, soumettre votre formulaire s'il passe vos tests de validation?

par exemple

function btnClick() { 
    if (validData()) 
        document.myform.submit();
}

1 votes

Appuyer sur Entrée permettra de contourner la vérification. Utilisez onSubmit

0 votes

Ensuite, cela ne fonctionnera pas du tout si JavaScript n'est pas disponible. [Build" rel="nofollow noreferrer">icant.co.uk/articles/pragmatic-progressive-enhancement‌​/…](<a href=) sur des choses qui fonctionnent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X