W
williamc
Somebody asked me if it would be possible to add auto-advance to a web
form where there are a lot of repetitive 5 character fields. I took a
look around the web and found a script, which appears to work in the
couple of browsers I tried it in. However, when I look at the script it
appears to have the wrong number of brackets. Then when I changed the
script to the way I thought it should be, it still worked!
I'm totally rusty on javascript. I think I remember that you're allowed
to omit brackets when you only have 1 line following the if (or while,
or whatever).
A couple of questions:
Are the brackets in the original script below wrong or am I missing
something?
Can anyone recommend a different auto-advance script?
Or, is auto-advancing a bad idea all around from a
usability/accessibility point of view?
thx,
--wmc.
<SCRIPT LANGUAGE="JavaScript">
<!-- Original: Cyanide_7 ([email protected]) -->
<!-- Web Site: http://members.xoom.com/cyanide_7 -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode;
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form == input)index = i;
else i++;
return index;
}
return true;
}
// End -->
</script>
form where there are a lot of repetitive 5 character fields. I took a
look around the web and found a script, which appears to work in the
couple of browsers I tried it in. However, when I look at the script it
appears to have the wrong number of brackets. Then when I changed the
script to the way I thought it should be, it still worked!
I'm totally rusty on javascript. I think I remember that you're allowed
to omit brackets when you only have 1 line following the if (or while,
or whatever).
A couple of questions:
Are the brackets in the original script below wrong or am I missing
something?
Can anyone recommend a different auto-advance script?
Or, is auto-advancing a bad idea all around from a
usability/accessibility point of view?
thx,
--wmc.
<SCRIPT LANGUAGE="JavaScript">
<!-- Original: Cyanide_7 ([email protected]) -->
<!-- Web Site: http://members.xoom.com/cyanide_7 -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode;
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form == input)index = i;
else i++;
return index;
}
return true;
}
// End -->
</script>