2011-05-06 83 views
0

如何限制在文本框中輸入的任何特殊字符? 我有一個文本框,用戶可以在文本框中輸入以驗證數據庫中是否存在url。之前我打的DB我想確保有在文本框中如何限制在文本框中輸入的任何特殊字符

進入了一個例子無特殊字符,如果一些用戶嘗試輸入類似:它們粘貼或鍵入特殊的URL前 )(*&<>&*^&*^&*$%#[email protected]#$http://[email protected]#$%^&*()

字符我怎麼能不允許在文本框?

唯一的厚望這就是:&(符號)被允許,如果它是在URL這樣的事情之間:

http://cnn.com/news/latest.html&id=1 
+0

與此問題類似http://stackoverflow.com/questions/2150973/filtering-what-c​​haracters-can-be-added-to-a-text-box – 2011-05-06 18:12:03

回答

0

最簡單的答案就是製作一個方法去除客戶端的字符。

$('#myTextBox').keyup(function() 
{ 
    var santizedValue = ''; 
    for(var j = 0; j < this.value.length; j++) 
     if(this.value[j].toLower() == 'a' || this.value[j].toLower() == 'b' ...) 
      sanitizedValue += this.value[j]; 

     //Alternatively; convert the character to integer and check the ASCII range for a-z + & 

    this.value = sanitizedValue; 
}); 

你在你的服務器上做了一個類似的方法(只是爲了防止客戶端沒有javascript或打敗腳本)。

+0

此方法失敗,當用戶複製並粘貼一個字符串中有一些特殊字符... – Biki 2012-08-20 09:25:47

1

使用文本框的KeyPress事件。在處理程序中,運行要針對e.KeyChar驗證的正則表達式,如果發現無效字符,請將e.Handled設置爲true。這將防止字符被輸入框中。

如果要測試整個文本,可以連接新字符和當前的Text屬性,然後針對該屬性運行表達式。可以使用Validating事件來驗證整個輸入。

編輯:針對the link garykindel postedKeyPress將是比TextChanged一個更好的選擇,或者因爲撤消更改,以及與用戶的輸入位置食堂前的前觸發事件MaskedTextBox中,和MaskedTextBox中太對黑名單字符的限制。

+1

這僅適用於客戶端應用程序;在客戶端的每個關鍵點上做回帖都是自殺。 – Tejs 2011-05-06 18:15:52

+0

我同意Tejs ... – 2011-05-07 18:54:21

相關問題