我有以下代码检查“输入”密钥,并阻止在文本框中使用>
和<
符号。
<script type="text/javascript" language="javascript">
function checkKeycode(e) {
var keycode;
if (window.event) // IE
keycode = e.keyCode;
else if (e.which) // Netscape/Firefox/Opera
keycode = e.which;
if (keycode == 13) {
//Get the button the user wants to have clicked
var btn = document.getElementById(btnSearch);
if (btn != null) { //If we find the button click it
btn.click();
event.keyCode = 0
}
//Removed when above code was added 12-09-13
//CallSearch();
}
}
function CallSearch() {
var objsearchText = window.document.getElementById('txtSearchText');
var searchText;
if ((objsearchText!=null))
{
searchText = objsearchText.value;
searchText = searchText.replace(/>/gi, " >");
searchText = searchText.replace(/</gi, "< ");
objsearchText.value = searchText;
}
//This cookie is used for the backbutton to work in search on postback
//This cookie must be cleared to prevent old search results from displayed
document.cookie='postbackcookie=';
document.location.href="search_results.aspx?searchtext=";
}
</script>
如何缩短代码以使其更有效并使用onBlur
函数并使用RegExp
而不是替换?或者替换比RegExp
更快的方法?
答案 0 :(得分:1)
您说要阻止<
和>
字符。这是一种更简单的方法,只要在keydown事件发生时忽略这些字符。
我还建议使用jQuery - 如果可以的话。
http://api.jquery.com/event.which/
var ignoredChars = [188, 190]; // <, >
$('#myTextField').keydown(function(e) {
if(ignoredChars.indexOf(e.which) > -1) {
e.preventDefault();
e.stopPropagation();
return false;
}
})
.keyup(function(e) {
if(e.which === 13) {
$('#searchButton').click();
}
});
只需将此事件处理程序添加到文本框中,然后删除正则表达式替换。 如果您不希望用户输入字符,请尽早压制它们。这样你以后就不会麻烦地摆脱它们。