2014-02-08 6 views
-2

У меня есть два текстовых поля, в которых допустимы только целые положительные числа. Если какие-либо буквенные значения или любые другие символы (например,% $ & * £ ") введены, сообщение об ошибке должно отображаться и значения не должны оказывать таблицу.Проверка Javascript только для позитивного целочисленного ввода

<input type="button" value="total" name="B3" onclick="powerOf();"> 

Эта линия позволяет расчету быть сделано, как это может валидация остановить это происходит , когда неправильные значения введены ?? в настоящее время минус число вычисляются и ввод алфавитов производит пустую таблицу, которая не совсем то, что я собирался для:

(no1== no1.match(/^-\d+$/) ? alert("First number must be positive"): no1 = no1 ? no1 : 0); 
     (no2== no2.match(/^-\d+$/) ? alert("Second number must be positive"): no2 = no2 ? no2 : 0) 

     var range1 = parseInt(no1); 
     var range2 = parseInt(no2); 

Любые идеи?

+0

Где код подтверждения? – Pointy

+1

Вы хотите использовать свой собственный или использовать существующую библиотеку проверки? – yoavmatchulsky

+0

Этот вопрос уже задан [здесь] (http://stackoverflow.com/questions/10834796/validate-that-a-string-is-a-positive-integer) – djluis

ответ

1

Примечание: Вы можете сделать это просто с помощью HTML5 формы проверки:

<input type="number" min="1"> 

Тогда вы не сможете отправить форму, если введенное значение не является числом выше, чем 1. Это только кажется, работать в Chrome, хотя.


Чтобы ответить на ваш вопрос, что вы ищете является event.preventDefault(). Если вы измените функцию OnClick на:

<input type="button" value="total" name="B3" onclick="powerOf(event);"> 

, то вы можете запустить event.preventDefault() в функции powerOf, и при запуске, что это событие будет «отменен». Например:

function powerOf(event) { 
    if (!/^\d+$/.test(document.getElementById('input-1').value)) { 
     event.preventDefault(); 
    } 
} 

что отменит событие щелчка, когда значение входного сигнала с id="input-1" является только не цифры.

См. this demo для примера.

+1

Firefox 26.0 с удовольствием отправит форму с полем «number» '', значение которого не является числом. – Pointy

+0

@ Понятно, что это странно, я просто проверил http://caniuse.com/form-validation, и он говорит, что FF должен его поддерживать. После [тестирования самого себя] (http://jsbin.com/hireb/1/edit/), однако, он действительно работает очень хорошо, даже не признавая ввод как CSS-': invalid'. Я обновил свой ответ (он, похоже, не работает в IE11). – Joeytje50

+0

Да, он работает в Chrome. Лично я считаю, что реализация ввода «число» в Chrome является действительно уродливой, поэтому я использую только «номер» на устройствах с сенсорным экраном, потому что это также влияет на раскладку экранной клавиатуры. – Pointy

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