2014-09-04 42 views
0

我想知道是否有方法來禁用所有按鍵事件(如鍵入文本),而文本框元素被選中/有焦點但仍然允許使用ctrl + v粘貼快捷方式。換句話說,我想使它成爲用戶可以在框中輸入任何文本的唯一方式,就是粘貼它(通過使用上下文菜單或ctrl + v)。防止用戶將文本輸入文本框,但允許粘貼鍵盤快捷方式

+0

的onkeydown = 「返回false;」 – 2014-09-04 10:20:25

+0

對不起,過早地問了這個問題......我檢查了返回錯誤;對於keydown事件,不管是否按下ctrl鍵,但卻有拼寫錯誤!對不起,浪費時間! – SenTaiyou 2014-09-04 10:29:14

回答

1

下面的代碼,停用的keydown,但請按Ctrl + V的工作。

http://jsfiddle.net/70h3zron/

var ctrlActive = false; 

$('#idtext').keydown(function(e) { 
    if(ctrlActive) 
    { 
     if(event.which == 86) { 
      return true; 
     } 
     else 
     { 
      e.preventDefault(); 
      return false; 
     } 
    } 
    else 
    { 
     if(event.which == 17) 
      ctrlActive = true; 
     else 
     { 
      e.preventDefault(); 
      return false; 
     } 
    } 
}); 


$('#idtext').keyup(function(e) { 
    if(event.which == 17) { 
     ctrlActive = false; 
    } 
}); 
+0

謝謝!我嘗試了類似的東西,但認爲它不工作,因爲我的代碼中有一個錯誤,我沒有發現它,並認爲我錯了! – SenTaiyou 2014-09-04 10:32:22

+0

別擔心,我讀了你的更新,但我已經做了代碼。你的代碼工作正常嗎? – SeraphimFoA 2014-09-04 10:37:21

+0

是的,它工作正常..謝謝! – SenTaiyou 2014-09-04 10:53:27

0

使用此jQuery中,

$('#yourTextElementId').keypress(function(){ 
    return false; 
)}; 

Demo

2

嘗試這個簡單的解決方案:

<input type="text" id="txtbox" /> 


$(document).ready(function() { 
    var ctrlKey = 17 
    var vKey = 86 
    $("#txtbox").keydown(function (e) { 
     if (!(e.ctrlKey && e.which == vkey)) { 
      return false; 
     } 
    }); 
}); 

DEMO

+0

整潔的解決方案。難道你不能在keydown事件arg – SeraphimFoA 2014-09-04 11:30:15

+0

中檢查那樣的值嗎?是的,它可以被檢查。你想檢查整個文檔的'keydown'嗎? – 2014-09-04 11:31:53

+1

顯然沒有必要。我試過你的代碼,即使你在文本框外按下ctrl,它也能正常工作,選擇保持按下ctrl的文本框,然後按'v'。做得好! – SeraphimFoA 2014-09-04 12:53:41

相關問題