2016-11-18 98 views
1

我在Asp.net MVC項目中工作,其中有幾個文本框只接受文本和其他鍵,如退格鍵,箭頭等。 我的代碼在桌面瀏覽器中工作正常但在手機瀏覽器中,event.keycode總是返回229。僅用於桌面瀏覽器和使用jquery的移動瀏覽器的文本文本框

var AllowedKeys = [46, 8, 9, 37, 39]; 
 

 
$(".textonly").keydown(function (event) { 
 
    if ($.inArray(event.keyCode, AllowedKeys) !== -1) {} 
 
    else 
 
     { 
 
      if (event.keyCode < 65 || event.keyCode > 90) { 
 
         event.preventDefault(); 
 
       } 
 
     } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<input type='text' name='FirstName1' placeholder = "First Name*" class = "textonly">

它不是在Mobile瀏覽工作。

+0

也許[this](http://stackoverflow.com/a/14625553/1784876)線程會幫助你。 – Qsprec

+0

嘗試使用event.which,而不是event.keyCode –

+1

如果您使用正則表達式檢查文本框中的文本是否不是文本 – Bardo

回答

1

最後,我找到了適用於桌面瀏覽器和移動瀏覽器的解決方案。我沒有使用正則表達式得到期望的結果。我以不同的方式使用了鍵碼。這是代碼。

$(".textonly").keyup(function (event) { 

    var AllowedKeys = [46, 8, 9, 37, 39, 189]; 
    var textarea = this; 

    var kc = event.which || event.keyCode; 

    if (!kc || kc == 229) { 
     var ss = textarea.selectionStart - 1; 
     var ssv = ss || 0; 
     var char = textarea.value.substr(ssv, 1); 
     var newchar = char.toUpperCase();   
     kc = newchar.charCodeAt(0); 
    } 

    if ($.inArray(kc, AllowedKeys) !== -1) {} 
    else { 
     if (kc < 65 || kc > 90) { 
      var inputString = $(this).val(); 
      var shortenedString = inputString.substr(0, (inputString.length - 1)); 
      $(this).val(shortenedString);    
     } 
    } 
}); 
相關問題