更新する入力フィールドがほとんどありません。タブキーを押すと、現在のフィールドの検証が成功した後にのみ、フォーカスを次のフィールドに移動する必要があります。失敗した場合は、同じフィールドに残ります。
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 では問題なく動作します。