我有很少的輸入字段需要更新。當按Tab鍵時,我需要將焦點移動到下一個字段,只有在對當前字段進行一些驗證成功之後。如果失敗,則保持在同一個字段中。防止在Firefox中默認的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哈桑的代碼----
<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中工作正常。
要觸發哪個事件的fieldFocus函數?是否可以用你的代碼創建jsFiddle來觸發該函數? – 2013-03-05 11:13:52
@Faizul哈桑,我已經更新了代碼示例..對不起,我不能更新它到jsFiddle。希望你能理解我的要求.. – idsTech 2013-03-05 11:36:46
我不認爲你必須通過下一個領域。只需嘗試我已發佈的答案。它工作正常...希望這會幫助你.. – 2013-03-05 11:41:19