onSubmit retourne false ne fonctionne pas
Je suis complètement confus ... je l'avais jure que c'était hier ... je me suis réveillé ce matin et tous les formulaires de mon arrêté de travailler dans mon projet.
Tous les formulaires ont une "onsubmit" à une fonction qui renvoie faux, puisque c'est un appel ajax, de sorte que la forme n'est jamais envoyé.
Après beaucoup de tests, je me suis simplifié la question de ce morceau de code:
<html>
<head>
<script type="text/javascript">
function sub()
{
alert ("MIC!");
return false;
}
</script>
</head>
<body>
<form method = "post" id = "form1" onsubmit = "return sub()">
input: <input type="text" name="input1" >
<a href="#" onClick="document.getElementById('form1').submit();">button</a>
</form>
</body>
</html>
J'avouerais que cela fonctionne parfaitement, mais c'est aujourd'hui, ni de travail 😀
Pourquoi si j'appuie sur le bouton d'envoi du formulaire ?
Je sais que c'est un total newbie question, mais je suis coincé
Merci !
source d'informationauteur StuckOnSubmit | 2010-03-30
Vous devez vous connecter pour publier un commentaire.
Navigateurs ne pas appeler l'événement onSubmit sur le formulaire si vous appelez submit() par programmation.
L'événement onsubmit se déclenche uniquement pour la forme normale de soumissions. Il ne se déclenche pas lorsque le JavaScript
submit()
méthode est appelée.La meilleure solution est d'utiliser une normale bouton soumettre ici.
Si vous voulez continuer avec l'aide d'un lien vers le haut de la page (ce qui n'est pas discrèteprogressiveou gracieux), alors vous devez appeler la
sub()
fonction explicitement et de tester la valeur de retour avant de décider si vous devez appelersubmit()
ou pas.Il semble que le "submit ()" fonction contourne la "forme" tags "onsubmit" événement dans Firefox et IE8.
Si vous utilisez un bouton de soumission, alors qu'il fonctionne comme prévu:
Vous pouvez utiliser jquery méthode preventDefault.
Essayez de vous changer "bouton" code comme ça
Je suppose qu'il a voulu utiliser un bouton de formulaire qui n'était pas le type d'envoi.
Dans ce cas, vous pouvez également utiliser:
Un autre conseil que je donne est d'utiliser le
name
attribut dans toutes les formes, car il est beaucoup plus facile à utiliser:document.form1.submit()
au lieu dedocument.getElementById('form1').submit()
. Il est crossbrowser et de travail dans tous les d'entre eux. getElementById est super, mais pas nécessaire pour les formulaires.Ajouter "retour" dans tous vos onsubmit déclarations dans votre balise de formulaire...par exemple onsubmit="return validate_function()" de cette façon, le retour de faux ou de retour dans votre valider la fonction est affiché comme le résultat de la commande de retour dans votre onsubmit.
J'ai eu le même problème (j'ai été en utilisant IE 8),
code suivant ne fonctionne PAS:
et suivant du code de TRAVAIL,
Je viens de suivre l'exemple de ici
Et s'il vous plaît noter que:
Vérifier les syntaxes de base et des structures... puis Vérifiez vos autres formes sur votre page ou des boîtes d'entrée avec pas de forme... j'ai eu le même problème (ou similaires: en appuyant sur entrée dans la zone d'entrée serait la cause de la forme à envoyer) ...
J'ai copier coller les échantillons ci-dessus et de chargement de la page. Ils ont travaillé et mine de ne pas, donc j'ai modifié la mise en forme et de même réécrit.