2012-01-24 78 views
1

我使用的是javascript。我想在我的文本字段添加驗證,只允許字符。Java腳本驗證符號%不能在文本字段中允許

隨着字符,我允許左鍵箭頭鍵,它有鍵碼37.但這是創建問題,因爲%的鍵碼也是37.而且我不想允許%符號。

請教我如何區分%和左箭頭鍵,因爲兩個鍵碼都是37?

+0

看起來您正試圖爲SQL生成目的清理輸入。我並不是說你不知道它,而只是一個友好的提醒 - 在服務器端**也應用相同的邏輯**。 –

+0

你是什麼意思「只有人物」? 「%」是一個字符。你的意思是「只有字母數字字符」或什麼的? – nnnnnn

+0

是的我的意思是說字母數字字符。 –

回答

1

如果按「百分比」鍵的字符代碼是37,爲「左arrow'鍵它不是37;例如:

$('#test').keypress(function(oEvent) { 
    if (oEvent.charCode == 37) { 
     return false; 
    } 
}); 

另請參閱此jsfiddle

=== UPDATE ===

有關其他Internet Explorer的支持:

$('#test').keypress(function(oEvent) { 
    var iCode = typeof oEvent.charCode == 'number' ? oEvent.charCode : oEvent.keyCode; 
    if (iCode == 37) { 
     return false; 
    } 
}); 

也看到這個jsfiddle

0

不要限制用於驗證的按鍵。人們可以複製/粘貼來克服這一點。

你需要使用正則表達式來驗證你的輸入。

瞭解更多關於它從https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

+0

按鍵驗證的替代方法不是正則表達式,它是onchange,onblur和/或onsubmit。 (當然,您可以在更改/提交驗證中使用正則表達式,但您不必這樣做。) – nnnnnn

0

您應該在用戶提交表單後驗證您的用戶輸入。你可以編寫一個函數,在數據提交給服務器之前運行表單的「onsubmit」屬性,或者你可以設置表單動作爲「action ='javascript:someFunction()'」。不允許鍵擊使用戶界面對於最終用戶而言更加複雜和繁瑣,並且對xss或注入攻擊構成安全風險。我會建議用javascript檢查用戶輸入,並在錯誤信息無效時返回錯誤信息,然後在服務器端再次驗證數據並清理數據。

+0

我同意防止按鍵往往會使界面更加繁瑣,但您爲什麼認爲這會帶來安全風險? – nnnnnn

+0

如果這是數據驗證的唯一方式,那麼javascript會提供幾種提交無效數據的方法。 – Ethan

+0

無論您在客戶端如何進行驗證,您都必須在服務器上進行驗證,但與驗證'onsubmit'相比,防止擊鍵有什麼作用? – nnnnnn

相關問題