2017-08-10 32 views
0

我如何模擬輸入鍵按下表現像選項卡。我不想使用jQuery。我只需要對當前輸入(文本字段)進行模糊(鬆散焦點)並將焦點放在下一個(輸入)元素上。我試過這個,但它不起作用。HTML表格重點

const handleKeyUp = (event) => { 
const keyCode = event.keyCode || event.which; 
if (event.target.value !== '' && keyCode === 13) { 
    event.preventDefault(); 
    event.target.blur(); 
    event.target.dispatchEvent(new KeyboardEvent('keypress', { key: 'Tab' })); 
    } 
    }; 

回答

0

您不能通過模擬事件來觸發默認瀏覽器行爲。

您需要在標籤順序中標識下一個字段,在DOM中找到它,然後調用它的focus()方法。

0
$(document).on('keydown', ':tabbable', function (e) { 
    if (e.which == 13 || e.keyCode == 13 ) { 
     e.preventDefault(); 
     var $canfocus = $(':tabbable:visible') 
     var index = $canfocus.index(document.activeElement) + 1; 
     if (index >= $canfocus.length) index = 0; 
     $canfocus.eq(index).focus(); 
    } 
}); 

Example

+0

提到的提問,他不希望使用jQuery。但保持這個答案未來活着。 – reporter

+0

這將以DOM順序導航,忽略基於tabindex的訂單更改。 – Quentin