我有以下功能,禁止在文本框中输入数字或特殊字符。此功能在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();
}
});
答案 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
属性中使用跨浏览器。
<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;
答案 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.which
或e.keyCode
,因为在这种情况下不需要..此正则表达式将禁用_
以及.
和-
,如果您需要其中任何一种,可将其删除