Si8
Si8

Reputation: 9225

How to replace code to use RegExp

I have the following code which checks for "enter" key as well as prevent the use of > and < sign in the textbox.

<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> 

How can I shorten the code to be more effecient and use the onBlur function and to use RegExp instead of replace? Or is replace a faster method than RegExp?

Upvotes: 0

Views: 87

Answers (1)

angabriel
angabriel

Reputation: 5038

You are saying that you want to prevent < and > chars. Here is an easier way, just ignore these chars when the keydown event occurs on them.

Also I suggest to use jQuery - if you can.

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

Just add this event handler to your textbox and remove the regexp replacements. If you don't want characters to be input by user, surpress them as early as possible. This way you won't get in trouble fiddling them out of a big string later.

Upvotes: 1

Related Questions