2015-12-21 31 views
3

我想通過java腳本而不是鍵盤按(只爲我的教育)字符。我有輸入,我想按內鍵,但它不工作(我知道initKeyboardEvent只在Chrome中,我使用Chrome),這個代碼有什麼問題?如何按javascript(而不是鍵盤)的任何字符

<input id="edit"> 
<script> 
    var inp = document.getElementById('edit'); 
    inp.focus(); 

    var ev = document.createEvent('KeyboardEvent'); 

    ev.initKeyboardEvent(
     'keypress', true, true, window, false, false, false, false, 49, 0); 

    document.body.dispatchEvent(ev); 
</script> 

回答

0

純粹的實驗,並因爲它讓我感興趣......因爲你標記jQuery的...你可以創建自己的虛擬鍵盤,隱藏它,然後聽一聽是每次點擊的事件。然後,您可以只使用jQuery的trigger()功能爲您希望模擬任意鍵...

HTML

<div id="keyboard"> 
    <button id="char-65" class="keyboard">&#65;</button> // A 
    <button id="char-66" class="keyboard">&#66;</button> // B 
    // ...... 
    <button id="char-125" class="keyboard">&#125;</button> // } 
    <button id="char-126" class="keyboard">&#126;</button> // ~ 
</div> 

CSS

#keyboard{ 
    display:none 
} 

jQuery的

$('.keyboard').on('click', function(ev){ 

    switch(ev.target.id){ 
      case 'char-65': // do whatever 
      break; 
      case 'char-66': // do whatever 
      break; 
    } 
}); 

然後,只需觸發按鈕...

$('#char-65').trigger('click'); 
$('#char-66').trigger('click'); 

UPDATE

當時在更好的解決方案,我的答案GET的這個

function simulateKeyPress(character) { 
    $.event.trigger({ type : 'keypress', which : character.charCodeAt(0) }); 
} 

simulateKeyPress("A"); 
simulateKeyPress("B"); 
+0

謝謝您的回答完全擁有的四處張望:)我標記後與「jQuery的」,becouse我跳上更多的人可以看到我的問題。你能找到我的代碼中的錯誤,爲什麼它不工作? – Jacek

+0

不,雖然我之前讀過使用'keypress'時Chrome中存在已知錯誤......您是否試過'keydown'以查看是否有效? – AdamJeffers

相關問題