我無法正確處理輸入類型=「文本」中的某些事件。 我只需要一個過濾器只接受[^ 0-9]字符。如何避免javascript事件在文本字段中的無效輸入?
我需要以下幫助:
- 不接受任何內容從控制+未來粘貼命令。從Control + V(鍵盤)或右鍵單擊鼠標+粘貼選項。
我試過至今:
按鍵事件我很好地處理來自鍵盤輸入任何內容。 ([^ 0-9]和enter,backspace,home,end等字符都不會被忽略)。
鍵控我處理奇怪控制+粘貼(鍵盤)事件。 我粘貼一些字符串,粘貼字符串後,我裁剪任何非白名單字符。 PS: 但這不右擊+粘貼(鼠標)工作,既不
的onChange垃圾串,直到用戶模糊領域保持可見。
我想要什麼:
示例複製字符串 「123.321.456-78」 粘貼 「12332145678」 或 「ABC 2#7!」 並貼上 「27」。
不要接受任何可能的非白名單字符。 (即使有$( '#字段')VAL( 「垃圾輸入123」)
從上面所有的問題,我可以很好地或古怪(又名處理:。keuup)輸入,但右擊+粘貼(鼠標)永遠不會觸發任何事件,這樣我就可以做適當處理
我想過做間隔檢查,但這是太醜陋了
編輯:。
代碼如下
function soNumeroInteiro_keypressHandler(event)
{
var code = event.keyCode || event.which;
switch(code)
{
case 8: // backspace
case 37: // left
case 39: // right
case 9: // tab
case 46: // delete
case 35: // end
case 36: // home
return true;
break;
case 86: // control + A
case 97: // control + V
case 120: // control + X
if (event.ctrlKey) {
return true;
}
break;
}
var tecla = String.fromCharCode(code);
return tecla.match(/^\d$/) != null;
}
function soNumeroInteiro_keyupHandler(event)
{
event.currentTarget.value = event.currentTarget.value.replace(/[^0-9]/g, '');
}
請顯示你已有的代碼。看看['element.onpaste'](https://developer.mozilla.org/en/DOM/element.onpaste)。 –
@ marcel-korpel完成...似乎onpaste將解決我的問題。我沒有意識到它曾經存在過。我讀了所有的jQuery文檔,並沒有發現任何線索。 – Ismael