mam 20 pól tekstowych o rozmiarze 1
Zasada działania.
Wpisując literkę w pierwsze pole przeglądarka automatycznie powinna przechodzić do drugiego pola itd.
Używając klawisza backspace powinna kasować literkę i cofać się do poprzedniego pola.
Wszystko działa okej w Firefox,ale
W IE i Opera jak wstawię kursor w np: 15. pole i nacisnę Backspace to nie skasuje mi zawartości 15 pola tylko przeskoczy do 14. Jeśli następnie przycisnę BACKSPACE to wszystko już działa Okej: kasuje literki i przechodzi do pól o mniejszych Id. Chodzi o ten początkowy etap - wstawiam kursor w "15" naciskam backspace i oczekiwany rezultat przeze mnie to skasowanie zawartości oraz przejście do pola id 14.
To samo z wpisywaniem:
Po wstawieniu kursora np: w 1. pole i wpisaniu czegoś przeskakuje do 2. pola ale nie wpisuje zawartości pierwszego. Później już wszystko działa. ... chyba, że znowu wstawię kursor w inne pole za pomocą myszki.
Mam nadzieję , że w miarę jasno wytłumaczyłem o co chodzi: Oto kod
Kod
<input type="text" name="field_name_01" id="01" maxlength="1" value="" onkeypress="change_box(this,event)">
...
<input type="text" name="field_name_20" id="20" maxlength="1" value="" onkeypress="change_box(this,event)">
...
<input type="text" name="field_name_20" id="20" maxlength="1" value="" onkeypress="change_box(this,event)">
Kod
function change_box(elem,event)
{
var liczba = 20;
var box = elem.id;
var keyCode;
if (window.event)
{
// dla IE i Opera
keyCode = window.event.keyCode;
if (keyCode==8)
{
box--;
document.getElementById(box).focus();
}
else
{
if (box==liczba)
box = liczba;
else
box++;
document.getElementById(box).focus();
}
}
}
{
var liczba = 20;
var box = elem.id;
var keyCode;
if (window.event)
{
// dla IE i Opera
keyCode = window.event.keyCode;
if (keyCode==8)
{
box--;
document.getElementById(box).focus();
}
else
{
if (box==liczba)
box = liczba;
else
box++;
document.getElementById(box).focus();
}
}
}
Kod w JS jest tylko dla przeglądarki Opera i IE jako, że tutaj są problemy. Dla Firefoxa kod jest podobny, więc nie było sensu go kopiować.