输入类型="数字"选择器不工作

时间:2017-05-23 09:09:10

标签: javascript jquery

我想以多种形式限制输入,并且我试图从keyup事件的输入中删除字母。问题是它似乎仅适用于type="text"输入,但我需要type="number"输入。

Fiddle

  

注意:我需要在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;
&#13;
&#13;

5 个答案:

答案 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)

好的伙计们,感谢所有的帮助,我想我终于在这里解决了。

JSFiddle

<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, '')">