我几乎没有要更新的输入字段。当按 Tab 键时,只有在当前字段的某些验证成功后,我才需要将焦点移动到下一个字段。如果失败,则留在同一领域。
function fieldFocus(e, nxFld){
var key;
if (window.event) key = e.keyCode;
else if (e.which) key = e.which;
if (!e.shiftKey && key === 9) {
e.stopPropagation();
e.preventDefault();
// do validate {}
if (success)
$(nxFld).focus(); //set the focus to the next fld
else
// remain in the same field
}
return false;
}
$(currFld).bind("keydown",function(e) {
return fieldFocus(e, nxtFld);
});
这在 IE 和 Chrome 中运行良好。但在 Firefox 中,默认焦点总是在验证之前触发。请帮助我防止Firefox的默认行为。
----编辑了与@Faizul Hasan的代码相关的代码----
<script>
function fieldFocus(e, obj){
var key;
if (window.event) key = e.keyCode;
else if (e.which) key = e.which;
if (!e.shiftKey && key === 9) {
// do validate
if (0 !== obj.value.length){
var answer = confirm('Are you sure?')
if(answer)
return true;
else{
// need to stop cursor focus to the next field
e.stopPropagation();
e.preventDefault();
}
}
else{
e.stopPropagation();
e.preventDefault();
}
}
return false;
}
</script>
在用户确认焦点移动到 Firefox 中的下一个字段之前,这就是我遇到真正问题的地方。但在 IE 和 Chrome 中它工作正常。