我已經寫上一組輸入一些簡單的keydown事件處理程序,像這樣的按下並按住選項卡時的Javascript標籤的keydown,它閃爍無限
$('.a, .b, .c').on('keydown', function (e) {
switch(keycode) {
case 9:
e.preventDefault();
e.stopPropagation();
if($('.a'))
// focus next
else if($('.b'))
// focus next
....
break;
}
})
然而,當我按下tab不放,光標閃爍無限的事件不再發生,我必須把注意力集中在窗外,然後回來停下來。
一直試圖弄清楚現在有很多天,任何人都可以照亮一下我該如何阻止這種行爲?
好的,我已經編輯了代碼,並重現了錯誤,我發現了錯誤並解決了問題。下面是生成效果的代碼。
$(document).ready(function(){
$('.c, .d').on('focus', function (e) {
if (e.relatedTarget) {
var v = $(this).val();
var n = v.toString().replace(/,/g, "");
$(this).val(n);
var $elementThis = $(this);
setTimeout(function() { $elementThis.select(); }, 50);
}
});
$('.a, .b').on('focus', function (e) {
if (e.relatedTarget) {
var $elementThis = $(this);
setTimeout(function() { $elementThis.select(); }, 50);
}
});
$('.a, .b, .c, .d').on('keydown', function(e) {
var keycode = e.charCode || e.keyCode || 0;
switch (keycode) {
case 9:
{
e.preventDefault();
e.stopImmediatePropagation();
if ($(this).hasClass('a')) { $('.b').focus(); }
else if ($(this).hasClass('b')) { $('.c').focus(); }
else if ($(this).hasClass('c')) { $('.d').focus(); }
else if ($(this).hasClass('d')) { $('.a').focus(); }
break;
}
}
})
});
那是給我這個問題的部分是
setTimeout(function() { $elementThis.select(); }, 50);
使其閃爍不停。 我在找它的替代品。歡迎任何建議。
請刪除downvote。我希望這種見解能夠對未來某個人有所幫助。
好像是在這裏很好:https://jsfiddle.net/RoryMcCrossan/r0g1vfjL/。你能向我們展示一個問題的例子嗎? –
你試過'返回false;',它,以防止默認'tab'行爲('e.prevenDefault();'防止冒泡,不是默認的按鍵行爲)? – ankhzet
你的'e.keyCode'和'e.preventDefault()'存在拼寫錯誤https://jsfiddle.net/r0g1vfjL/2/ – mylee