2016-11-10 72 views
0

我在ASP.NET中有一个文本字段,我只想在该字段中只允许字母数字和正斜杠(/)键。我想下面的代码,只允许在文本框中使用字母,数字和正斜杠的JQuery

function jsCheckInput(e) { 
    var evt = (e) ? e : window.event; 
    var key = (evt.keyCode) ? evt.keyCode : evt.which; 
    if (key != null) { 
     key = parseInt(key, 10); 
     if (key < 47 || (key > 57 && key < 65) || (key > 90 && key < 97) || key > 122) { 
      if (!jsIsUserFriendlyChar(key)) { 
       return false; 
      } 
     } 
     else { 
      if (evt.shiftKey) { 
       return true; 
      } 
     } 
    } 
    return true; 
} 

function jsIsUserFriendlyChar(val) { 
    // Backspace, Tab, Enter, Insert, and Delete 
    if (val == 8 || val == 9 || val == 13 || val == 45 || val == 46) { 
     return true; 
    } 
    // Ctrl, Alt, CapsLock, Home, End, and Arrows 
    if ((val > 16 && val < 21) || (val > 34 && val < 41)) { 
     return true; 
    } 
    return false; 
} 

在Web窗体页我加入类似下面,

<asp:TextBox ID="text_value" CssClass="textbox" onkeydown="return jsCheckInput(event);" runat="server"></asp:TextBox> 

在这里,我能够进入字母和数字,但我不能够进入价值/。我已经启用了shift键,所以我可以给shift + ?输入正斜杠。另外一个问题是,当我按shift +任意数字键时,像! @ # $ %^& * () ...那样的特殊字符也会进入tet场。我在这里做错了什么?

+0

使用正则表达式 – Dherya

+0

这可能帮助:http://stackoverflow.com/questions/8661254/javascript-only-allow-alphanumeric-and-hyphen-value-in-text-field – Rajesh

+0

这个回答可以帮助你:HTTP ://stackoverflow.com/questions/469357/html-text-input-allow-only-numeric-input – Tecnologer

回答

0

SOLUTION

终于找到了如下的解决方案,

function jsCheckInput(e, t) { 
    try { 
     if (window.event) { 
      var charCode = window.event.keyCode; 
     } 
     else if (e) { 
      var charCode = e.which; 
     } 
     else { return true; } 
     if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || (charCode > 46 && charCode < 58)) 
      return true; 
     else if (jsIsUserFriendlyChar(charCode)) 
      return true; 
     else 
      return false; 
    } 
    catch (err) { 
     alert(err.Description); 
    } 
} 

此代码工作完美!

0

如果您想使用正则表达式。如果你不

const regex = /^[a-z0-9\/]+$/gi; 
const str = `asdasdas/asdfaASDASDA`; //test string 

if(regex.test(str)){ 
    console.log('Allowed'+str); 
    } 

测试here

0

你不需要Shift键,输入斜线忽略。正斜杠(/)的关键代码是191.只需在if条件中添加它即可。

function jsCheckInput(e) { 
    var evt = (e) ? e : window.event; 
    var key = (evt.keyCode) ? evt.keyCode : evt.which; 
    if (key != null) { 
     key = parseInt(key, 10); 
     if (key < 47 || (key > 57 && key < 65) || (key > 90 && key < 97) || key > 122 || key != 191) { 
      if (!jsIsUserFriendlyChar(key)) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 
相关问题