in tapestry-contrib/src/org/apache/tapestry/contrib/form/MaskEdit.js [164:228]
function specialKey(e) { // deal with special keys like backspace, delete etc
var s = getEventObject(e);
var code = e.keyCode;
dontDoIt = true; // Moz needs these, as I can't seem to cancel events properly
isTab = false; // Moz can't handle tabs well either
switch (code) {
case 8: // backspace
var b = getPrevEdit(s);
if (b) {
b.display.innerHTML = displayMaskChar(b.mask);
var i = b.index;
b.field.value = b.field.value.substr(0, i) +
displayMaskChar(b.mask) + b.field.value.substr(i+1, b.field.value.length - i);
b.focus();
}
cancelEvent(e);
return false;
case 46: // delete
if (s.display) {
s.display.innerHTML = displayMaskChar(s.mask);
var i = s.index;
s.field.value = s.field.value.substr(0, i) + displayMaskChar(s.mask) +
s.field.value.substr(i+1, s.field.value.length - i);
}
cancelEvent(e);
return false;
break;
case 37: // left
var p = getPrevEdit(s);
if (p) {
p.focus();
}
cancelEvent(e);
return false;
case 39: // right
var n = getNextEdit(s);
if (n) {
n.focus();
}
cancelEvent(e);
return false;
case 36: // home
s.div.firstChild.focus();
cancelEvent(e);
return false;
case 35: // end
s.div.lastChild.focus();
cancelEvent(e);
return false;
case 9: // tab
if (navigator.appName == "Microsoft Internet Explorer") {
if (!e.shiftKey) {
s.div.lastChild.focus();
} else {
s.div.firstChild.focus();
}
return;
} else { // is mozilla/netscape
isTab = true; // best i can do really
}
break;
}
dontDoIt = false;
}