Newsgroup: it.comp.lang.javascript
Titolo: spostarsi sugli input...

Ciao a tutti!
Sto cercando di pensare una funzioncina che mi permetta di spostarmi sugli input 
usando le frecce direzionali piuttosto che il tab... Ovviamente e' disabilitata 
la classica tendina che compare sotto gli input e che fa vedere la history dei 
valori precedentemente inseriti...
La pagina e' ricca di input ma quelli in cui verrà agganciata la funzione per 
gli spostamenti non sono tutti, ma sono divisi in righe e colonne, quindi 
pigiando la freccia in giu' cambio riga, a dx o sx cambio colonna e in su cambio 
riga...
Io stavo cercando di studiare un approccio mediante l'indicizzazione... cioe', 
nella pagina ci sono 90 input, io sono sul 50esimo, mi sposto a dx e cado sul 
51esimo, ma come faccio a runtime a sapere che sono al 50esimo?
quanti input ho lo so da document.getElementsByTagName("input").length... ma ho 
bisogno di sapere su che input ho il focus...
Grazie per ogni spunto che vorrete darmi!
byez
Viandante
Ps: non voglio passare alla funzione nessun argomento, vorrei che fosse piu' 
generale possibile... se si puo' fare...

Ah, ho dimenticato di dirvi che l'unico "parametro" della funzione e' sapere 
quanti input per riga ci sono, in modo da poter saltare alla riga successiva in 
maniera corretta... e vorrei mantenere solo questo come parametro variabile se 
possibile...



Mah ... al di là del tuo problema (da ragionarsi, anch'io ho fatto funzioni
simili ma vanno ben ragionate e studiate) io passerei "this" così da avere
un riferimento diretto su quale input ha scatenato l'evento. Una volta
scoperto qual è l'elemento cicli la form, lo trovi e dai il focus
all'elemento successivo (dico di ciclare la form perché sono sicuro che
siano in ordine, immagino lo siano anche per getElementsByTagName ma non ci
giurerei). Quanto sopra per passare all'elemento successivo, poi per
passare alla riga successiva farai un giochetto di divisione e resto con il
numero di input per riga.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

Questo e' quello che ho partorito fino ad ora:
function premi(e, ogg)
{
	var sposta;
	var celle = document.getElementsByTagName("input");
	var ncelle = document.getElementsByTagName("input").length;
 
	// Destra = 39
	// Sinistra = 37
	// Su = 38
	// Giu' = 40
 
	if (e.which == 39)
	{
 
		for (sposta = 0; sposta < ncelle; sposta++)
		{
 
			if (celle[sposta].getAttributeNode("name").value == 
ogg.name
)
			{
				if (ncelle < (sposta+2))
					celle[0].focus();
				else
					celle[sposta+1].focus();
			}
		}
	}
 
	if (e.which == 37)
	{
 
		for (sposta = 0; sposta < ncelle; sposta++)
		{
 
			if (celle[sposta].getAttributeNode("name").value == 
ogg.name
)
			{
				if (sposta == 0)
					celle[ncelle-1].focus();
				else
					celle[sposta-1].focus();
			}
		}
	}
 
	if (e.which == 40)
	{
 
		for (sposta = 0; sposta < ncelle; sposta++)
		{
 
			if (celle[sposta].getAttributeNode("name").value == 
ogg.name
)
			{
				if (ncelle > (sposta+2))
					celle[sposta+2].focus();
			}
		}
	}
 
	if (e.which == 38)
	{
 
		for (sposta = 0; sposta < ncelle; sposta++)
		{
 
			if (celle[sposta].getAttributeNode("name").value == 
ogg.name
)
			{
				if ((sposta-2) >= 0)
					celle[sposta-2].focus();
			}
		}
	}
}
suggerimenti per migliorarla?

 suggerimenti per migliorarla?
io aggiungerei un break; quando lo trovi (Così non cicli sempre l'intera
collection). Per il resto se funziona va bene, se non va: che problemi hai
rilevato?
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 
Grazie per il break ;)
va tutto... ho solo una cosa: nella console js di firefox mi da un'eccezione:
Errore: [Exception... "'Permesso negato per ottenere la proprietà 
XULElement.selectedIndex' when calling method: 
[nsIAutoCompletePopup::selectedIndex]"  nsresult: "0x8057001e 
(NS_ERROR_XPC_JS_THREW_STRING)"  location: "JS frame :: 
http://apocalisse/test/spostamento.php
 :: premi :: line 76"  data: no]
Dalla barra del webdeveloper non viene segnalata, ma aprendo la console vedo 
questa eccezione. Di cosa si tratta?
Grassie!
Viandante

 
http://apocalisse/test/spostamento.php
 :: premi :: line 76"  data: no]
L'errore e' sulle righe in cui do' il focus

 L'errore e' sulle righe in cui do' il focus
E' un bug di firefox e non puoi farci nulla, temo (ci ho pestato la testa
qualche mese fa, poi in rete ho trovato che cosě č ...)
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 Grazie per il break ;)
FERMO!!
Ho messo i break... ora non va piu' niente... non mi da piu' l'eccezione, ma non 
mi da neanche il focus!!!
frammento:
...
if (e.which == 39)
	{
 
		for (sposta = 0; sposta < ncelle; sposta++)
		{
 
			if (celle[sposta].getAttributeNode("name").value == 
ogg.name
)
			{
				if (ncelle < (sposta+2))
				{
					celle[0].focus();
				}
				else
				{
					celle[sposta+1].focus();
				}
 
				break;
			}
		}
	}
...
non mi sposta a dx il focus e non da neppure piu' l'eccezione...

 mi da neanche il focus!!!
[CUT]
mi sembra molto strano...il frammento che hai postato mi sembra corretto.


 l'eccezione, ma non mi da neanche il focus!!!
Sono cretino... scusa...
Avevo cannato il parametro per il confronto...
Allora... l'eccezione la da sempre... pero' si muove...
Scusate, sono fuso... ed e' presto ancora :P

 valori precedentemente inseriti...
Scusa come l'hai disattivata???
Grazie!



autocomplete="off" nei tag?
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 
Molto piu' caninamente :D
Dalle impostazioni di FF...
Privacy -> Impostazioni salvate nei moduli -> Salvare le informazioni inserite 
nelle pagine....
Li' ho tolto la spunta ;)
Tanto per navigare usano IE... per la mia applicazione usano FF su mio ordine :P 
eheh

 Molto piu' caninamente :D
:-) anche perché temo autocomplete sia solo per IE...


 :-) anche perché temo autocomplete sia solo per IE...
Ragione in piu' per non usarlo :P anzi... direi ragione necessaria e
sufficiente :P eheh
cmq io non sapevo della sua esistenza... e mai lo usero'...



Come non detto:
http://devedge-temp.mozilla.org/viewsource/2003/form-autocompletion/index_en.html
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 
Ah ecco... e secondo te la generazione di tanti di questi errori (in una pagina 
con 70 input in cui ci si puo' spostare con le frecce direzionali generano una 
vagonata di sti errori) puo' portare ad una instabilità di firefox con 
conseguenti crach inaspettati? Se cosi' fosse abbandono l'idea di inserire gli 
spostamenti con le frecce...
Grazie mille ancora ;)

 spostamenti con le frecce...
Non lo so, lo ho usato in un un sito e ho rilevato questo problema; a me
non crea problemi, ma certo non sono 70 input ... a naso direi di no.
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.