2016-11-10 10 views
0

私はASP.NETにテキストフィールドを持っており、その中に英数字とスラッシュ(/)キーのみを許可したいと考えています。私はTextBoxのアルファベット、スラッシュ、スラッシュだけを許可するJQuery

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

は、ここで私はアルファベットと数字を入力することができるが、私は値/を入力することはできませんよ

、私は以下のように追加したWebフォームページで

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

、次のコードを試してみました。シフトキーを有効にしたので、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

正規表現を使用する場合は、あなたはhere

0

をテストされていない

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

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

を行う場合は、スラッシュを入力するために、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; 
} 
関連する問題