因爲我覺得人有我也有可能會出現一些非標準的解決方案之前,遇到它大量的時間..任何人都可以給任何暗示方向如何防止用戶輸入非ASCII字符一個文本框。防止在打字文本非ASCII字符
回答
我個人覺得與互動有點惱人的標準模式修修補補,但如果你必須過濾鍵盤輸入,你可以通過攔截按鍵事件,取消你不想讓那些做:
var allowed = /[a-zA-Z0-9]/; // etc.
window.onload = function() {
var input = document.getElementById("test");
input.onkeypress = function() {
// Cross-browser
var evt = arguments[0] || event;
var char = String.fromCharCode(evt.which || evt.keyCode);
// Is the key allowed?
if (!allowed.test(char)) {
// Cancel the original event
evt.cancelBubble = true;
return false;
}
}
};
而且它更簡潔和漂亮的jQuery:
var allowed = /[a-zA-Z0-9]/; // etc.
$(function() {
var input = document.getElementById("test");
$("#input").keypress(function (e) {
// Is the key allowed?
if (!allowed.test(String.fromCharCode(e.keyCode || e.which))) {
// Cancel the original event
e.preventDefault();
e.stopPropagation();
}
});
});
你的正則表達式應該是「var allowed =/[a-zA-Z0-9] /;」 – Vlad
@Vlad:感謝您的注意!固定。 –
這有一個問題,它不允許用戶退格/刪除,以糾正他在現場輸入的內容,也不允許用戶使用箭頭鍵在現場移動。有沒有更好的方法來處理這個問題,而不僅僅是把這個添加到函數的開頭: if(e.keyCode == 8)return; if(e.keyCode == 37)return; if(e.keyCode == 38)return; if(e.keyCode == 39)return; if(e.keyCode == 40)return; –
如果你正在尋找一個簡潔的ASP.NET解決方案,您可以使用RegularExpressionValidator控件來限制一個ASP.NET TextBox的內容。除了頁面標記定義和用於驗證的正則表達式之外,您不必編寫任何服務器或客戶端代碼。驗證將在雙方爲您檢查。
例如:
<asp:TextBox id="txtItem" runat="server" MaxLength="50"></asp:TextBox>
<asp:RegularExpressionValidator id="SomeFieldValidator" runat="server"
CssClass="SomeClass" ControlToValidate="txtItem"
ErrorMessage="This field only accepts ASCII input." Display="Dynamic"
ValidationExpression="^[A-Za-z0-9]*$"></asp:RegularExpressionValidator>
在該片段中,txtItem是需要驗證文本框。 SomeFieldValidator控件使用ControlToValidate屬性鏈接到txtItem控件。 ValidationExpression屬性是用於強制執行TextBox內容的正則表達式。根據文檔,該表達式需要被編寫爲與JScript和.NET Regex正則表達式兼容。另外,我只將正則表達式設置爲字母數字字符。你可能要考慮使用類似^[\ W \ S] * $ instead-如果你在打印的字符,而不是僅僅ASCII真正感興趣。
A面的好處是用這種方法是,你還可以插入這些驗證到的可更新的應用程序.aspx頁,而不需要比應用程序池重新啓動的任何其他。
也得心應手是的RequiredFieldValidator控制。你可以用文本框鏈接這些控件,也有的RegularExpressionValidator連接。這些處理需要在TextBox中輸入的情況。
這裏有一些引用鏈接。
RegularExpressionValidator Control at MSDN
RequiredFieldValidator Control at MSDN
- 1. 打印非ASCII字符
- 2. 防止在UITextView中捕獲非ASCII字符
- 3. 如何防止Html.ActionLink在URL中編碼非ASCII字符
- 4. 文字中的非ASCII,非Unicode字符
- 5. 停止熊貓寫入非源字符的非ASCII字符
- 6. 防止將非ASCII字符串寫入列
- 7. 非ASCII字符停止mysql語句
- 8. FWRITE非ASCII字符
- 9. wxStyledTextCtrl非ASCII字符
- 10. ActionMailer非ASCII字符
- 11. Python非ASCII字符
- 12. 非轉義非ASCII字符的ASCII非-8BIT腳本
- 13. 如何打印非ASCII字符用C
- 14. 如何防止非英文字符,並允許非字母字符
- 15. 反轉包含ASCII字符和非ASCII字符的字符串
- 16. 打印ASCII字符
- 17. 如何在Python 2.7中打印非ASCII字符文件
- 18. 如何在使用python3的文件中打印非ASCII字符?
- 19. 非ASCII字符「\ XC5」破python腳本
- 20. 查找非ASCII字符的字符串
- 21. 如何防止非ASCII字符被保存在Drupal數據庫中?
- 22. 如何定義包含非ASCII字符的字符串文字?
- 23. C#解碼非ASCII字符?
- 24. fputcsv中的非ascii字符
- 25. 刪除非ASCII字符
- 26. 非ASCII字符的Python - re.sub
- 27. preg_match_all:包含非ASCII字符
- 28. Matplotlib中的非ASCII字符
- 29. PHP中的非ASCII字符?
- 30. 散列非ASCII字符C#
你需要做的客戶端?爲什麼不做服務器端?這樣,即使用戶關閉了JavaScript,您仍然可以刪除不需要的字符。此外,防止用戶輸入非ASCII字符似乎有點幼稚,有點過時;-) –
你是什麼意思的「非ASCII」? Unicode字符?或者只是字符超出0-127範圍? –