2012-08-17 12 views
4

我要尋找一個簡單的JS可能禁止撇號的onkeyup的OnKeyPress或那種東西。對於前者,每次用戶按下一個按鍵(如果是撇號),則用空格替換它。我不想在PHP中處理它
我找到了一個代碼,但它將JS綁定到我不想要的文本字段名稱。我需要的東西全球,險要的撇號打字時HTML的textBox

+0

向我們展示你找到的代碼,我們可以幫你去適應它。 「全球化」是什麼意思? – Bergi 2012-08-17 15:03:57

+0

「我不想用PHP來處理它。」你將需要在PHP中處理它,因爲你不能相信用戶輸入。 – 2012-08-17 15:11:06

回答

7

它總是更好的防止擊鍵而不是追溯其刪除。要做到這一點,你需要攔截keypress事件(keyup爲時已晚):

document.getElementById('yourTextBoxID').onkeypress = function() { 
    if (event.keyCode === 39) { // apostrophe 
     // prevent the keypress 
     return false; 
    } 
};​ 

http://jsfiddle.net/TSB9r/

如果你只想出現在框中停止',但想的按鍵事件傳播到父元素,用event.preventDefault();代替return false;。 (通過的Eivind Eidheim Elseth的意見建議)

+1

使用'event.preventDefault()'而不是'return false'可能會更習慣用法。 – 2012-08-17 15:11:45

+0

39是'右箭頭'的keyCode。 – 2012-08-17 15:14:51

+0

@EivindEidheimElseth它們執行不同的事情 - '返回false'相當於調用'preventDefault' **和**'stopPropagation'。 – jbabey 2012-08-17 15:15:21

0

請從下面的功能。它抓取頁面上的所有input元素,併爲其中的每個元素分配​​和keyup事件處理程序。如果他們發現一個撇號,它會調用preventDefault()方法..

function listen(event, elem, func) { 
    if (elem.addEventListener) return elem.addEventListener(event, func, false); 
    else elem.attachEvent('on' + event, func); 
} 

listen('load', window, function() { 
    var inputs = document.getElementsByTagName('input'); 
    for (var i = 0; i < inputs.length; i += 1) { 
    keyHandler(i); 
    } 
    function keyHandler(i) { 
    listen('keydown', inputs[i], function(e) { 
     if (e.keyCode === 222) { // 222 is the keyCode for apostrophe 
     e.preventDefault(); 
     } 
    }); 
    listen('keyup', inputs[i], function(e) { 
     if (e.keyCode === 222) { // 222 is the keyCode for apostrophe 
     e.preventDefault(); 
     } 
    }); 
    } 
});