如何替换代码以使用RegExp

时间:2014-01-20 23:30:08

标签: javascript regex

我有以下代码检查“输入”密钥,并阻止在文本框中使用><符号。

<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更快的方法?

1 个答案:

答案 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();
  }
});

只需将此事件处理程序添加到文本框中,然后删除正则表达式替换。 如果您不希望用户输入字符,请尽早压制它们。这样你以后就不会麻烦地摆脱它们。