输入数字接受尾随破折号

时间:2018-04-27 14:18:23

标签: html html-input

如何阻止接受尾随破折号的输入数量(“10-”或“10-7”之类的值)?如果输入的格式错误,输入不会给你任何价值。

<input name="Number" type="number">

4 个答案:

答案 0 :(得分:0)

function validate(evt) {
  l = document.getElementsByTagName('input')[0].value.length;
  if(l === 0 && String.fromCharCode(evt.keyCode) === '-') return
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}
<input type='text' onkeypress='validate(event)' />

答案 1 :(得分:0)

您可以使用模式属性:

<input name="Number" type="number" pattern="[0-9]*">

答案 2 :(得分:0)

如果不验证输入值,则无法进行此操作。

由于它是一个表示数字的字符串,因此无法确定字符串是否表示数值。

Permitted属性不允许您验证数字输入控件的值。

在JavaScript的帮助下实现此目的的一种方法可能是这样的。

var numInput = document.querySelector('input');

// Listen for input event on numInput.
numInput.addEventListener('input', function(){
    // Let's match only digits.
    var num = this.value.match(/^\d+$/);
    if (num === null) {
        // If we have no match, value will be empty.
        this.value = "";
    }
}, false)



<input name="Number" type="number" min="0" >

答案 3 :(得分:0)

将 keydown 事件绑定到输入,如果 keyCode == 189 或 keyCode == 69,则 preventDefault()