входной номер принимает конечные тире - PullRequest
0 голосов
/ 27 апреля 2018

Как я могу заблокировать входное число принимающих концевых тире (значения типа "10-" или "10-7")? Если вы введете неправильный формат, Ввод не даст вам никакого значения.

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

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Вы можете использовать атрибут pattern:

<input name="Number" type="number" pattern="[0-9]*">
0 голосов
/ 27 апреля 2018

Это невозможно без проверки значения входа.

Поскольку это строка, представляющая число, нет никакого способа убедиться, что строка может представлять числовые значения или нет.

Разрешенные атрибуты не позволят вам проверить значение элемента управления вводом числа.

Один из способов сделать это с помощью 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" >
0 голосов
/ 27 апреля 2018

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)' />
...