Javascript函数在Firefox新版本中不起作用

时间:2018-01-22 17:32:04

标签: javascript jquery html jquery-ui firefox

我有以下功能,禁止在文本框中输入数字或特殊字符。此功能在IE和Chrome中运行良好,但在Firefox中这些功能无法正常工作,并且能够输入数字和字符。任何人都可以建议如何在Firefox中解决这个问题?我的FF版本是57.0.4

$("#firstName").keypress(function(event) {
        var character = String.fromCharCode(event.keyCode);
        return isValid(character);     
    });


        function isValid(str) {
            return !/[~`!@#$%\^&*()+=\-\[\]\\';,/{}|\\":<>\?]/g.test(str);
        }

         $( document ).ready(function() {
             $( "#firstName" ).keypress(function(e) {
                 var key = e.keyCode;
                 if (key >= 48 && key <= 57) {
                     e.preventDefault();
                 }
             });

2 个答案:

答案 0 :(得分:1)

$("#firstName").keypress(function(event) { var character = String.fromCharCode(event.which); return isValid(character); }); function isValid(str) { return !/[~`!@#$%\^&*()+=\-\[\]\\';,/{}|\\":<>\?]/g.test(str); } $("#firstName").keypress(function(e) { var key = e.which; if (key >= 48 && key <= 57) { e.preventDefault(); } });已弃用。 jQuery规范化了这个属性,以便在event.which属性中使用跨浏览器。

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id=firstName />
&#13;
list1=[5,1,4,2,3,8,0,9,12,7]
list2=list1
list3=[]
len1=(len(list1))

for i in range (len1):
    for j in range (len(list2)):
        curr=list1[j]

        if (j> 0):
            if (prev > curr):
                prev=prev
            else:
                prev=curr
        else:
            prev=curr

    idx=list2.index(prev)
    del list2[idx]
    list3.append(prev)
print(list3)
&#13;
&#13;
&#13;

答案 1 :(得分:1)

要禁用输入数字或特殊字符,您可以使用

/[~`!#@$%\^&*+=\-\[\]\\';,_./{}\(\)\|\\":<>\d+$?]/g 

You can try this regex Here而不是使用keypress()你可以使用.on('input') ..下一个代码适用于chrome,firefox和IE

$("#firstName").on( 'input' ,function(event) {
  var ThisVal = $(this).val();
  if(isValid(ThisVal) == false){
  	$(this).val(ThisVal.substr(0, ThisVal.length - 1));
  }
});


function isValid(str) {
  return !/[~`!#@$%\^&*+=\-\[\]\\';,_./{}\(\)\|\\":<>\d+$?]/g.test(str);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id=firstName />

  

注意:我不在乎这里使用e.whiche.keyCode,因为在这种情况下不需要..此正则表达式将禁用_以及.-,如果您需要其中任何一种,可将其删除