2015-10-19 14 views
0

我有一個RequiredFieldValidator的作品,除了當我試圖提交包含下列字符的字符串:如何驗證用戶是否嘗試提交HTML?

&# 

我們的網絡服務器拒絕請求,指出我們不可以提交HTML。

如何執行客戶端驗證以防止包含這些字符的字符串或其他可以解釋爲HTML的字符?

+0

有關更換角色是什麼? –

+0

不應該在客戶端對html進行編碼,然後在服務器端(web服務器)解碼爲什麼限制用戶? –

+0

服務器拒絕特定字符集還是全部非字母數字字符。在這種情況下,您只需在javascript中使用正則表達式並在'[a-zA-Z0-9] *' – niksofteng

回答

0

我有這樣的問題,「<」「>」標籤。 我爲我的表單添加一個事件處理程序。而當我點擊提交按鈕javasript代碼工作之前值發送到服務器。

<from ..... onsubmit = "return confSubmit();"> 

,並添加一個功能,我的javascript這改變了字符:

function confSubmit() { 
    document.getElementById("Employee").value = document.getElementById("Employee").value.replace(/</g, "&lt;"); 
document.getElementById("Employee").value = document.getElementById("Employee").value.replace(/>/g, "&gt;"); 
    } 
+0

上測試輸入。我想您首先需要用'&'替換'&' - 對於原始文本已經包含你不想解碼服務器端的「<」。 –

+0

是的,當然,我不帶整個代碼,只是爲了顯示我的解決方案:) –

0

一種方式是隻限制用戶輸入某些字符或禁止在某些字符鍵。正如你可以啓用或禁用某些按鍵爲例,在像

// check for only upper, lower char with [space] 
function onlyAlpha(e, t) { 
    if (navigator.appName == "Microsoft Internet Explorer") { 
     var n = event.keyCode; 
     if (n > 64 && n < 91 || n > 96 && n < 123 || n == 32) { 
     return true 
     } else {} 
    } else { 
     var n = t.charCode; 
     if (n > 64 && n < 91 || n > 96 && n < 123 || n == 32 || n == 0) { 
     return true 
     } else {} 
    } 
    return false 
} 

文本控件允許只允許字母數字

// check for upper, lower, [space], [,], [.] and numerals 
function onlyAlphaNumeric(e, t) { 
    if (navigator.appName == "Microsoft Internet Explorer") { 
     var n = event.keyCode; 
     if (n > 64 && n < 91 || n > 96 && n < 123 || n == 32 || n == 46 || n == 39 || n >= 48 && n <= 57) { 
     return true 
     } else {} 
    } else { 
     var n = t.charCode; 
     if (n > 64 && n < 91 || n > 96 && n < 123 || n == 0 || n == 32 || n == 46 || n == 39 || n >= 48 && n <= 57) { 
     return true 
     } else {} 
    } 
    return false 
} 

您可以將它們作爲

<asp:TextBox ID="txtText1" runat="server" onkeypress="return onlyAlpha(this,event);" MaxLength="30" /> 
<asp:TextBox ID="txtText2" runat="server" onkeypress="return onlyAlphaNumeric(this,event);" MaxLength="30" /> 

使用這樣的功能可以允許/禁止用戶填寫某些字符。您需要處理的一個問題是捕獲ctrl + v。你可以找到很多SO帖子來處理這個問題。

如果您方便的使用正則表達式你可以把線索從這些所謂的帖子javascript only allow alphanumeric and hyphen - value in text fieldREGEX (javascript) - Allow alphanumeric characters with special characters not in the first position

爲了防止形式從提交,更更好的辦法是使用一些客戶端的JavaScript庫/ jQuery插件。有很多可用的。

爲保險起見它會好得多使用正則表達式或自定義檢查輸入應用服務器端驗證,如

If txtText1.Text.Contains("#") OrElse txtText2.Contains("<") Then 
    'take action 
End If