11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
voilà, depuis que j'ai passé mon site de HTML 4.01 à HTML5, les deux scripts de contrôle de formulaire (champs importants et email) ne fonctionnent plus (je reçois par contre bien les informations sur ma boîte, mais si elles sont erronées...).
Voici donc le formulaire html:

<form  name="formsaisie"  method="get" enctype="text/plain"  action="envoi.php" onsubmit="return validation() && verifmail();">
<p><label>Nom*:</label><br>
<input name="nom" class="formulaire" maxlength='30'></p>
 <p><label>Prénom:</label><br>
 <input name="prenom" class="formulaire" maxlength='30'></p>
<p><label>Mail*:</label><br>
<input name="mail" class="formulaire" maxlength='40'></p>
<p><label>Adresse:</label><br>
<textarea name="adresse" class="formulaire2" maxlength='120'></textarea></p>
<p><label>Sujet*:</label><br>
<input name="sujet" class="formulaire" maxlength='30'></p>
<p><label>Message*:</label><br>
<textarea name="message" class="formulaire2" maxlength='500'></textarea></p>
<input  value="Envoyer" class="formulaire3" type="submit">
<input value="Effacer" class="formulaire4" type="reset">
</form>

et sa balise script en bas de page, avant /body:
<script  type="text/JavaScript"  src="lsscript.js"></script>

puis les deux scripts en question:
function validation()
{

if(document.formsaisie.nom.value == "")
{
alert('Anonymat refusé!');
return false;
}

if(document.formsaisie.mail.value == "")
{
alert('Un mail valide, SVP!');
return false;
}

if(document.formsaisie.sujet.value == "")
{
alert('Un sujet à votre message, SVP!');
return false;
}

if(document.formsaisie.message.value == "")
{
alert('Vous avez oublié votre message!');
return false;
}

else
{
return true;
}
}

function verifmail()
	{
	a = document.formsaisie.mail.value;
	valide1 = false;
	
	for(var j=1;j<(a.length);j++){
		if(a.charAt(j)=='@'){
			if(j<(a.length-4)){
				for(var k=j;k<(a.length-2);k++){
					if(a.charAt(k)=='.') valide1=true;
				}
			}
		}
	}
	if(valide1==false) alert
("L'adresse e-mail n'est pas valide!");
	return valide1;
	}

Tout ça marchait pourtant très bien jusque là...
La seule différence avant/après html5 que je vois, hors la normalisation que j'ai dû faire pour remplacer le tableau (label et p à la place des td), c'est que dans le "onsubmit" du formulaire, j'avais "&amp;&amp;" entre les 2 scripts en 4.01, et maintenant "&&" en html5. J'ai essayé les deux, rien à faire, plus rien ne marche.
Quelqu'un a t-il une idée du problème?
Modifié par Mbira35 (15 Dec 2015 - 13:52)
Ah oui, effectivement.
Mais rien à faire, j'ai tout renvoyé avec les changements, le formulaire en ligne m'affiche direct la page d'envoi... que peut-il bien se passer entre les deux??
Vous pouvez essayer vous même: lien
Modifié par Mbira35 (15 Dec 2015 - 15:57)
Tu as deux erreurs de script :
Uncaught SyntaxError: Unexpected token ILLEGAL (dans lsscript.js, ligne 2)
EDIT : on dirait qu'il y a deux sauts de ligne dans la liste des balises...
Uncaught ReferenceError: vitesse is not defined (sur le onload du body)
EDIT : si tu corriges la première erreur, la deuxième devrait disparaître (l'init' de vitesse est dans lsscript.js)
Modifié par SolidSnake (15 Dec 2015 - 16:10)
pour stoper la procedure submit action, si c'est ce que tu cherche, il faut le faire pour un return false dans ton onsubmit

exemple très simple :

<script>
function checkRegistration(){
    var form_valid = (document.getElementById('some_input').value == 'google');
    if(!form_valid){
        alert('Given data is incorrect');
        return false;
    }
    return true;
}
</script>
<form onsubmit="return checkRegistration()" method="get" action="http://google.com">
    Write google to go to google..<br/>
    <input type="text" id="some_input" value=""/>
    <input type="submit" value="google it"/>
</form>


Sinon tu peux mettre un lien avec un onclick, et à la fin au lieu de return true, tu fais un document.form.submit.
Modifié par JENCAL (15 Dec 2015 - 16:29)
Solid Snake, c'était bien ça... un script pour ie8 et l'affichage html 5 (qui d'ailleurs ne fonctionnait pas!), était resté en début de page... je l'ai supprimé et tout est rentré dans l'ordre. Smiley smile

Par contre maintenant les messages d'alerte ont des petits problèmes d'encodage apparemment:
"Un sujet ? votre message, SVP!", "Vous avez oubli? votre message"!, des trucs comme ça...

En tout cas grand merci à vous! Smiley lol
Bonjour,

Mbira35 a écrit :
Par contre maintenant les messages d'alerte ont des petits problèmes d'encodage apparemment:
"Un sujet ? votre message, SVP!", "Vous avez oubli? votre message"!, des trucs comme ça...

Rien de bien grave, essaie de réencoder ton fichier js en utf8 avec ton éditeur.
Hum un peu en retard mais bon ..
Sans javascript avec des inputs required et un type email ..

<form  name="formsaisie"  method="get" enctype="text/plain"  action="envoi.php">
<p><label>Nom*:</label><br>
<input required name="nom" class="formulaire" maxlength='30'></p>
 <p><label>Prénom:</label><br>
 <input name="prenom" class="formulaire" maxlength='30'></p>
<p><label>Mail*:</label><br>
<input required type="email" name="mail" class="formulaire" maxlength='40'></p>
<p><label>Adresse:</label><br>
<textarea name="adresse" class="formulaire2" maxlength='120'></textarea></p>
<p><label>Sujet*:</label><br>
<input required name="sujet" class="formulaire" maxlength='30'></p>
<p><label>Message*:</label><br>
<textarea required name="message" class="formulaire2" maxlength='500'></textarea></p>
<input  value="Envoyer" class="formulaire3" type="submit">
<input value="Effacer" class="formulaire4" type="reset">
</form>

Modifié par mathieu1004 (16 Dec 2015 - 15:48)