onsubmit méthode ne s'arrête pas soumettre
Mon onsubmit
ne fonctionne pas. Mon idée était de mettre certains champs obligatoires et, pour y parvenir, j'ai été en utilisant le onsubmit
méthode à l'intérieur d'un formulaire en HTML qui appelle une fonction JavaScript.
L'idée était de savoir si tous les champs obligatoires ont été remplis, la fonction javascript serait de retour true
et il allait passer à la page /control/Cadastro.php
. Sinon, si un champ obligatoire était vide, il serait de retour false
et il ne serait pas passer à la page /control/Cadastro.php
, séjourner dans la page en cours jusqu'en vrai.
Malheureusement, la fonction renvoie false
si tous les champs obligatoires ne sont pas remplis, comme prévu, mais il se déplace encore à la page /control/Cadastro.php
, même si elle ne devrait pas.
Je vais couper un peu de code pour faire mon point de vue perceptible.
<!DOCTYPE html>
<html>
<head>
<script>
function ValidateRequiredFields()
{
var message = new String('\nCampos obrigatórios:\n');
var flag=new Boolean(1);
var x=document.forms["theForm"]["nr_processoCA"].value;
if (x==null || x==""){
message += '\nNº do processo\n';
flag = new Boolean(0);
}
if (flag == false){
alert(message);
}
return flag;
}
</script>
</head>
<body>
<form name="theForm" onsubmit="return ValidateRequiredFields()" method="post" action="../control/Cadastro.php">
Nº do Processo: <br>
<input type="text" name="nr_processoCA" class="input-xlarge">
<br>
<div class="row-fluid" style="text-align:center;">
<input type="submit" class="btn btn-primary btn-large" value="Gravar">
</div>
</form>
</body>
</html>
- Ne pas être trop verbeux, il suffit d'écrire
var flag = true
ouflag = false
, idem pourString
🙂
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
preventDefault
à l'intérieur de votre onsubmit fonction. J'ai modifié votre code:DÉMO
Pour faire ce travail, votre
ValidateRequiredFields
fonction doit renvoyer une valeur booléenne. Et puis, vous devez associer cette méthode à laonSubmit
événement. Rappelez-vous, que pouronsubmit
vous devez utiliser lereturn
mot-clé.Cet exemple de code fonctionne:
je vous suggère de mettre un bouton qui va exécuter le formulaire si vrai:
c'est tout....
<input type="submit">
est faite, sans vous embêter avec intrusive js. Si il y a une erreur dans la fonction de validation, en la déplaçant autour de ne résoudra pas le problème.Un objet est toujours true, même si c'est un objet Booléen dont la valeur false.
Mettre
flag = true
en haut de la fonction, puisflag = false
au lieu de créer une valeur de type Boolean.J'ai eu un problème similaire. En fait il y a une erreur dans ma validation (nested quelques fonctions de profondeur) qui a été la cause de JavaScript pour arrêter l'exécution de la fonction, avant d'atteindre une instruction de retour. À quel point il serait tout simplement continuer à le soumettre.
Je conseille à quiconque de découvrir cette page à la recherche d'une réponse à "onsubmit méthode ne s'arrête pas soumettre" est à l'étape par le biais de votre fonction de validation avec un peigne fin.
Après autour de la recherche d'une réponse qui a travaillé pour moi, j'ai décidé de créer une solution. Le code suivant permet de HTML5 native de validation de formulaire pour s'exécuter avant de soumettre ou d'exécuter une autre fonction (testé dans Chrome). Assurez-vous de retourner false après la fonction pour empêcher la soumission du formulaire.
HTML: