input actif au chargement

VaN
Mammouth du PHP | 1107 Messages

13 févr. 2007, 19:02

Bonjour,

le titre du thread est surement très mal dit, mais je ne sais pas du tout comment appeler ce que je cherche à faire.

J'ai un formulaire, et j'aimerai qu'au chargement de la page, un de mes input soit directement prêt a recevoir un texte, c'est a dire que je n'ai pas besoin de cliquer dedans pour pouvoir y "crire du texte.

Comme par exemple sur Google : on affiche la page principale, et pouf, on peut directement écrire sa recherche.

Comment puis-je faire ?

ViPHP
ViPHP | 1961 Messages

13 févr. 2007, 20:03

Bonjour,

Tout simplement en utilisant des évènements.
Voici un petit exemple, il n'y-a pas grande chose à expliquer. Regarde et tu comprendras facilement
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
		<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
		<meta http-equiv="content-style-type" content="text/css"/>
		<meta http-equiv="expires" content="0"/>
		<title>Positionne sur premier champ</title>
		<script type="text/JavaScript">
		  // On détecte la fin du chargement de la page
		  window.onload = function(){
		    // On passe le focus au champ voulu
		    document.getElementById("champ_1").focus();
		  }
		</script>
	</head>
<body>
	<div>
	  <form action="" method="">
	    <input id="champ_1" type="text" />
	  </form>
	</div>
</body>
</html>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Jymi
Invité n'ayant pas de compte PHPfrance

29 août 2008, 20:35

Code : Tout sélectionner

<script type="text/JavaScript"> window.onload = function(){ document.getElementById("LOGIN|PSEUDO").focus(); } </script> <form name="authentification" action="'.$_SERVER['PHP_SELF'].'" method="post"><p> Login : <input class="input_authentification" type="text" name="LOGIN|PSEUDO" value="Pseudo" onFocus="this.select();"></br> PassWord : <input class="input_authentification" type="password" name="LOGIN|PASSWD" value="PassWord" onFocus="this.select()"></br> <input class="input_authentification" type="submit" value="Connexion"> </p></form>
Chose bizarre, si je choisis getElementById tout fonctionne à merveille, si comme je le pensais initialement je programme getElementByName, le focus ne fonctionne pas ???

Je tiens cependant à signaler que cette méthode est la seule fonctionnant avec des noms de champs qui comportent des symboles systèmes tels que " | " utilisé dans mon exemple. Les autres méthodes telles que celle-ci

Code : Tout sélectionner

<body onload="document.formulaire.champs.focus();">
ne donnent rien, peut-être d'ailleurs à cause du problème évoqué entre Id et Name ???

Je n'ai pas d'explication !

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

29 août 2008, 21:47

Ce n'est pas getElementByName mais getElementsByName

D'autres parts, le choix du caractère "|" pour composer tes noms de champs n'est pas judicieux car ce fameux caractère "|" est un mot réservé en programmation et il est utilisé pour représenter l'opérateur logique OU dans les expressions conditionnelles.

A ta place j'utiliserais le caractère "_" (souligné) pour composer un nom de variable. Ce qui donnerait par exemple : LOGIN_PSEUDO, LOGIN_PASSWORD, ...
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 19672 Messages

29 août 2008, 22:52

J'ajouterais pour information que getElementById pointe sur un seul élément alors que getElementsByName retourne un tableau indexé
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: