11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour!

J'apprends le javascript et je fais donc toutes sortes d'essais. Cependant, cela ne fonctionne pas (J'utilise Apatana IDE et j'ai vérifié les erreurs de syntaxe avec). Quelqu'un saurait-il où est l'erreur?

Le JS:

function login() {
	var user = John;
	var pass = Doe;
	var curUser = (document.forms["loginzone"].elements["user"].value);
	var curPass = (document.forms["loginzone"].elements["pass"].value);	
	if ((user == curUser) && (pass == curPass)
	){
	showHideLayers('loginbox','','hide');
	} else {document.write(curUser, '<br/>', curPass);}
}


Le HTML concerné:

<div id="loginbox">
  <form id="loginzone" name="loginzone" method="post" action="">
      <input type="text" name="user" id="user" />
      <input type="password" name="pass" id="pass" />
    <input type="submit" name="Connexion" id="Connexion" value="Submit" onClick="login()"/>
  </form>
</div>


SVP, pas de commentaires sur la sécurité du tout... je sais, ce n'est que des essais pour me pratiquer Smiley smile

La fonction showHideLayers() fonctionne parfaitement si elle est sur un simple lien, et il n'y a aucun conflit. Quelle pourrait-être l'erreur?

Merci!
FoxLeader
Modifié par FoxLeader (25 Aug 2007 - 23:30)
Modérateur
Salut,

John et Doe devraient être des chaînes texte non ? Smiley smile

Et puis si tu souhaites appliquer une action via JS à la soumission du formulaire, mieux vaut le faire directement sur le formulaire plutôt que sur le bouton submit afin qu'au cas où l'utilisateur tape entrée, la fonction JS se déclenche aussi.

Ce bout de code est préférable :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>Exemple</title>

		<script type="text/javascript"><!--

function login()
{
	var user = 'John';
	var pass = 'Doe';
	var curUser = document.getElementById('user').value;
	var curPass = document.getElementById('pass').value;
	
	if((user == curUser) && (pass == curPass))
		showHideLayers('loginbox', '', 'hide');
	else if(curUser && curPass)
		document.body.innerHTML = '<p>' + curUser + '<br/>' + curPass + '</p>';
	
	return false;
}

function init()
{
	var oForm = document.getElementById('loginzone');
	oForm.onsubmit = login;
}

window.onload = init;

		//--></script>
	</head>
	<body>

<form id="loginzone" method="post" action="">
	<div>
		<input type="text" name="user" id="user" />
		<input type="password" name="pass" id="pass" />
		<input type="submit" name="Connexion" id="Connexion" value="Submit" />
	</div>
</form>

	</body>
</html>
NB : L'attribut name sur form est invalide en XHTML Strict si c'est le doctype dont tu te sers.
Bonjour.

Peux-tu localiser l'erreur plus précisément en utilisant des alert() ?

Édit : grillé.
Modifié par CNeo (26 Aug 2007 - 09:54)