prévenir la soumission du formulaire (javascript)
J'ai un formulaire avec une saisie de texte:
<form name="form1">
<cfinput type="text" name="text1" id="text1" onChange="someFunc();">
</form>
Je ne le veux présenter dans certains cas. (Je exécuter une vérification des erreurs en premier)
<script>
function someFunc() {
if (1==2) {
document.form1.submit();
} else {
alert("Not submitting");
}
</script>
Le problème, c'est que même si l'alerte est le déclenchement de l'amende, en quelque sorte, la forme est toujours la présentation (Il n'y a pas d'autres présenter des déclarations en dehors de celui-ci!).
Merci beaucoup si quelqu'un peut jeter quelque lumière sur ce point . . .
Numérique de Chris suggestion de fonctionner, mais ce n'est pas la "meilleure pratique". Regarder jQuery.preventDafault() la méthode si vous aller dans cette voie et avoir votre script à soumettre le formulaire lors de la validation de renvoie la valeur true. Mais j'ai toujours penser en regardant ma réponse ci-dessous.
Merci beaucoup pour vos suggestions utiles. 1. Je ne vois pas Numérique de Chris réponse. 2. J'ai essayé d'utiliser preventDefault() mais ça ne fonctionne pas. 3. Pourquoi le "par Défaut" pour la saisie de texte mis à la soumission du formulaire? Le OnChange() attribut (la seule action de l'attribut spécifié) pointe vers mon someFunc() de la fonction, qui n'appelle pas au document.form1.soumettre(), donc OÙ DANS LE MONDE est le code de l'idée que la forme devrait soumettre? Merci beaucoup à l'avance pour clarifier!
Merci beaucoup pour vos suggestions utiles. 1. Je ne vois pas Numérique de Chris réponse. 2. J'ai essayé d'utiliser preventDefault() mais ça ne fonctionne pas. 3. Pourquoi le "par Défaut" pour la saisie de texte mis à la soumission du formulaire? Le OnChange() attribut (la seule action de l'attribut spécifié) pointe vers mon someFunc() de la fonction, qui n'appelle pas au document.form1.soumettre(), donc OÙ DANS LE MONDE est le code de l'idée que la forme devrait soumettre? Merci beaucoup à l'avance pour clarifier!
OriginalL'auteur SlimJim | 2014-06-16
Vous devez vous connecter pour publier un commentaire.
Il y a un vice fondamental de cette approche. Vous êtes actuellement dire la forme que lorsque
text1
modifications, puis d'appelersomeFunc()
. Si la valeur est true, l'utilisation de JavaScript pour soumettre le formulaire. Si la valeur est false, allez sur votre entreprise. Si vous appuyez sur entrée dans la saisie de texte, la forme encore fait valoir. Si il y a un bouton submit qui obtient cliqué, la forme encore fait valoir.La façon la plus simple de procéder est de la sorte:
Quand la de est soumis, appel
someFunc()
. Cette fonction doit retourner true ou false. Si elle retourne true, la forme soumet. Si la valeur est false, la forme ne fait rien.Maintenant votre JavaScript besoin d'une légère modification:
Vous pouvez toujours avoir d'autres fonctions appelées lorsqu'un champ est modifié, mais ils ne seront toujours pas gérer la mise en forme du mémoire final. En fait,
someFunc()
pourrait appeler d'autres fonctions à faire une dernière vérification avant de retourner true ou false pour l'événement onsubmit.EDIT: Documentation sur les implicites de la soumission du formulaire.
EDIT 2:
Ce code:
est d'arrêter le traitement par défaut pour le
change
événement associé à cet élément. Si vous souhaitez modifier lesubmit
cas, alors vous feriez ceci:Qui vous permettrait de faire quelque chose comme ceci:
Un formulaire n'a pas besoin d'un bouton de soumission. La plupart des navigateurs soumettre des formulaires lorsque vous appuyez sur entrée à l'intérieur de l'entrée. Prendre ce formulaire de commentaire par exemple: quand j'ai fini de taper, je peux cliquer sur "Ajouter un Commentaire" ou appuyez simplement sur la touche Entrée et la forme soumet. Il est possible de capturer l'événement de l'Événement touche enfoncée et d'arrêter que de soumettre le formulaire, mais il n'est pas souvent utilisé, car il peut interférer avec l'utilisateur du flux de travail. C'est lorsque le formulaire est soumis, que l'événement submit, qui peut être définie dans la balise de formulaire à l'aide de la "onsubmit" attribut, est exclu.
Merci beaucoup. C'est utile, mais où est le formulaire de l'idée qu'il doit soumettre tout simplement parce que la touche Enter est entré? Je n'ai pas préciser que. J'ai seulement précisé que onChange() doit pointer vers someFunc(). Si je n'avais pas un onChange() attribut, puis la forme ne pense pas que sur la soumission juste parce que j'ai frappé Entrer dans une saisie de texte. Voulez-vous dire que toutes les fois que vous avez un onChange() attribut, Coldfusion (ou Javascript) sera automatiquement virer de bord sur les soumettre?
Cela n'a rien à voir avec ColdFusion, ce qui est le noyau fonctionnalité HTML. onChange ne se déclenche une fois que le curseur quitte cette entrée spécifique et que l'entrée de la valeur a changé. En appuyant sur entrée dans toute saisie de texte automatiquement les feux de la soumission d'un formulaire dans tous les principaux navigateurs. J'ai ajouté un lien vers la spécification HTML, plus précisément à voir avec la soumission d'un formulaire, à ma réponse.
L'a obtenu. C'est très utile. Des idées pourquoi la suite n'est pas de travail?: $(document).ready(function(){ $("#texte1").onchange(function(event){ event.preventDefault(); }); });
OriginalL'auteur Adrian J. Moreno
OriginalL'auteur samadadi
utiliser le code suivant, il fonctionnera parfaitement bien
OriginalL'auteur gaurav