我想以多种形式限制输入,并且我试图从keyup事件的输入中删除字母。问题是它似乎仅适用于type="text"
输入,但我需要type="number"
输入。
注意:我需要在Firefox和IE上使用它。在铬这个 功能不是必需的。
$(function(){
$('input[type="number"], [type="text"]').keyup(function(e) {
if(this.value!='-')
while(isNaN(this.value))
this.value = this.value.split('').reverse().join('').replace(/[\D]/i,'')
.split('').reverse().join('');
})
.on("cut copy paste",function(e){
e.preventDefault();
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="number">
<input type="text">
&#13;
答案 0 :(得分:5)
你不应该在元素选择器和属性选择器之间留一个空格。
htdocs
应该是:
Alias
input [type="number"]
恰好起作用,因为它匹配所有元素,其type属性设置为input[type="number"]
。它真的应该是:
[type="text"]
整个选择器:
text
这个功能还有问题 - 两个input[type="text"]
?不需要。
此功能的更好方法是:
'input[type="number"],input[type="text"]'
答案 1 :(得分:2)
删除元素(输入)和属性之间的空格([type =&#34; text&#34;])
$(document).ready(function(){
$("input[type='text'],input[type='number']").keydown(function(){
$("input[type='text']").css("background-color", "yellow");
});
$("input[type='text'],input[type='number']").keyup(function(){
$("input[type='number']").css("background-color", "pink");
});
});
</script>
答案 2 :(得分:1)
错误发生是因为IE11填充value
属性的方式对于type =“number”来说很奇怪。
当我输入'1a'
然后this.value
为'1a'
时,您的代码就会正确执行
当我输入'a1'
然后this.value
为''
时,isNaN('')
变为false,您的代码不会执行。
我不是为什么IE11太奇怪了。
我建议不要使用isNaN
,并且通常会提高您的编码标准。评论中已经提到了许多小问题。
这是一个在IE11中运行的示例。 (这仍然在Chrome中测试了一些问题,但您已经声明对Chrome不感兴趣)
$(function(){
$('[type="number"], [type="text"]').keyup(function() {
this.value = this.value.replace(/\D/g, '');
})
.on("cut copy paste",function(e){
e.preventDefault();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="number">
<input type="text">
答案 3 :(得分:0)
您可以尝试以下链接,
https://jsfiddle.net/tkfnxpvy/4/
使用
$('input[type="number"],input[type="text"]'.keyup(function(e){
});
答案 4 :(得分:0)
好的伙计们,感谢所有的帮助,我想我终于在这里解决了。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="number" oninput="this.value = this.value.replace(/[^0-9.,]/g, '');">
<input type="text" oninput="this.value = this.value.replace(/[^0-9.,]/g, '')">