输入type =“ number”选择器不起作用

IXT*_*nai 2 javascript jquery

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

小提琴

注意:我需要在Firefox和IE上工作。在chrome上,此功能不是必需的。

$(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();
    });

});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="number">
<input type="text">
Run Code Online (Sandbox Code Playgroud)

Dig*_*end 5

元素选择器和属性选择器之间不应有空格。

input [type="number"]
Run Code Online (Sandbox Code Playgroud)

应该:

input[type="number"]
Run Code Online (Sandbox Code Playgroud)

之所以[type="text"]起作用,是因为它匹配所有类型属性都设置为的元素text。确实应该是:

input[type="text"]
Run Code Online (Sandbox Code Playgroud)

以及整个选择器:

'input[type="number"],input[type="text"]'
Run Code Online (Sandbox Code Playgroud)

函数还存在问题-两个split('').reverse().join('')?没有必要。

此功能的更好方法是:

$('input[type="number"], input[type="text"]').keyup(function(e) {
    this.value = this.value.replace(/[^0-9-]/i, '');
})
Run Code Online (Sandbox Code Playgroud)