Newsgroup: it.comp.lang.javascript
Titolo: utilizzare enter per passare da una input ad un'altra e non per il submit

Ciao 
ho provato a leggere un pò dato che se ne è parlato abbastanza però
non ci salto fuori!
Diciamo che sto provando a prendere spunto da alcuni post di ZERO
però ho ancora dei problemi...
Vorrei che sull'enter passasse alla input successiva, ma come si
gestiscono ne ce ne sono diverse come si fa a passare a quella
successiva quando ci sono N campi di input?
nello script sotto mi fa l'alert ma no mi passa il focus a quello
successivo...
e poi scatena sempre l'action se la tolgo dal form e uso la funzione
act invece non va mai!!
Qualche dritta!
Ciao pippo
<html>
<head>
<script type="text/javascript">
function act(url)
{
document.formprova.action=url
}
function noenter()
{
if (event.keyCode == 13) 
 { 
  alert('enter');
  document.formprova.testo2.focus();
 }
}
</script>
</head>
<body>
<form name="formprova" onsubmit="return false" action="prova.cfm"
method="post" >
 <input type="text" id="testo" name="testo" onKeyPress = "noenter();">
  <br>
  <br>
 <input type="text" id="testo2" name="testo2" onKeyPress =
"noenter();">
  <br>
  <br>
  <input type="submit" name="Submit" value="Submit"
onclick='document.formprova.submit();'>
</form>
</body>
</html>

aggiungo un dubbio...
se nella mia form ci sono dei campi hidden che succede???
come faccio a ignorarli????

 però ho ancora dei problemi...
Ah si?
Mi ricordo di aver fatto qualcosa del genere anni fa, ma si parla della
preistoria :)
BTW, questo e' un codice che ti ho buttato giu' al volo:
<script type="text/javascript">
window.onload=function(){
	document.forms[0].onkeypress=enter2tab;
}
 
function enter2tab(e){
	e=e||event;
	var sender=e.srcElement||e.target,
		frm=sender.form,
		ch=e.keyCode,nx=0;
 
	if (ch==13){		
		while (sender!=frm[nx++]);
 
		while (frm[nx] && ( frm[nx].type=="hidden" || frm[nx].type=="textarea") )
			nx++;
		if (nx>=frm.length)
			nx=0;
 
		frm[nx].focus();
		return false;
	};
}
 
</script>
</head>
<body>
<form >
	<input type="text" name="pxp" />
	<input type="password" />
	<input type="text" />
	<input type="hidden" />
	<input type="checkbox" />
	<select></select>
	<textarea></textarea>
	<input type="text" />
	<input type="hidden" />
</form>
Ha ampi margini di miglioramento, ma dovrebbe andare.
Su Firefox da' un errore sulla JS Console, e' un bug noto. Per evitarlo
andrebbe impostato l'autocomplete dei campi ad "off" in questo modo:
<input type="text" name="pxp" autocomplete="off"/>
Ma rendi il codice di markup non validabile.
-- 
ZER0
~ The Tangent Universe collapsed 5933 days, 4 hours and 55 minutes ago.

 
[cut]
io l'ho fatta cosi':
document.onkeydown = function(){
	if( window.event.keyCode == 13){
		window.event.keyCode = 9;
	}	
}
per IE altro non so, sugli "hidden" non dovrebbe andarci e neanche sui 
tabindex = -1
--
a.cara

 tabindex = -1
Anche il tabindex con valore negativo e' prerogativa unicamente di IE.
-- 
ZER0
~ The Tangent Universe collapsed 5933 days, 5 hours, 16 minutes and 8 seconds ago.

grazie funge alla grande
un paio di cose volevo capire
ma la tabulazione come si gestisce in una pagina html
cioč come posso impostare la sequenza dei focus delle input di un
form??
se volessi partire da una input text predefinita dovrei usare
document.form.nomedellainputchevoglio.focus() sull'onload della
pagina??
e se volessi fare una cosa standard che so tipo che debba partire
sempre dalla seconda o terza input e non dalla prima??

 
ahh... l'italiano
errata corrige.
per IE! Altro non so.
--
a.cara

 sempre dalla seconda o terza input e non dalla prima??
document.form.elements[1].focus();
Cosi' imposta il focus dal secondo elemento della form.
-- 
ZER0
~ The Tangent Universe collapsed 5937 days, 2 hours, 45 minutes and 6 seconds ago.