2015-03-12 2 views
1
$("#number").bind('keyup change click', function() { 
      if ($(this).val().match(/^\d+$/)) { 

      } else { 
       alert("Not a number"); 
      } 

Это мой код для ввода ввода, который является номером только от пользователя. Это нормально, но у меня возникли проблемы с start of click; когда я нажимаю он alert, что это не число, даже если он по-прежнему empty так я добавил еще один код:тип ввода число, принимает число только не письмо jquery

if ($(this).val().length === 0) { 
} 

от начала кода. Это устранило проблему с пустым или начальным щелчком проблемы, когда я печатаю letters это does not alert сообщение больше. Как исправить это? Любое предложение оценили

+0

Почему '===' не '=='? – VMAtm

+0

, потому что он имеет предупреждение «Ожидаемый» === »и вместо этого увидел« == ». 'Я работаю в netbeans, поэтому я избавился от предупреждения –

+0

Почему вы слушаете событие' click'? – hindmost

ответ

2

@Rias есть ответ выше, но вы также можете сделать следующее.

$("#number").bind('keyup change click', function() { 
    //Check only if the text box is not empty 
    if ($.trim($(this).val()) != "") { 
     if ($(this).val().match(/^\d+$/)) { 
     } else { 
      alert("Not a number"); 
     } 
    } 
}); 

Demo @Fiddle

Update: В случае, если вы хотели, чтобы удалить не-числовые символы, попробуйте следующее.

$("#number").bind('keyup change click', function() { 

    if ($.trim($(this).val()) != "") { 
     if ($(this).val().match(/^\d+$/)) { 
     } else { 
      alert("Not a number"); 
      $(this).val($(this).val().replace(/[^0-9]+/gi, "")); 
     } 
    } 
}); 
+0

, даже если я пишу письмо без предупреждения –

+0

Проверьте демо в своем ответе сейчас. – lshettyl

+0

Вы должны удалить последний введенный ключ, если он не является числом, иначе, если вы наберете «a», а затем 1, он все равно скажет вам, что это не номер, потому что он соответствует «a». – briosheje

1

Измените регулярное выражение /^\d*$/ и он будет принимать пустое поле также, потому что квантор * принимает 0 или более символов числа типа \d, в то время как + потребности 1 или более числа для соответствия.

$(document).ready(function() { 
 

 

 
    $("#number").bind('keyup change click', function() { 
 
    if ($(this).val().match(/^\d*$/)) { 
 

 
    } else { 
 
     alert("Not a number"); 
 
    } 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="number">

+0

Это нехорошо, я набираю несколько слов и получаю несколько ошибок, и каждый раз, когда я фокусируюсь на вводе, появляется предупреждение. – Kai

+0

Я только что скорректировал исходный код. Возможно, вам придется самому поразмышлять над этим. – Rias

+0

Также это зависит от того, что вы делаете, если не число, вы можете удалить поле или последнее слово или что-то еще. конечно, тревога вызывает беспокойство и не должна быть в окончательной реализации, но ее просили. – Rias

Смежные вопросы