Edit: я изначально предложил использовать ParseInt с IsNaN(), чтобы проверить, если вход был нечисловой. Похоже, что использование регулярного выражения предпочтительнее, чем правильное формирование случаев, таких как «4a», но во многих случаях это происходит быстрее (сюрприз!).
Я издевался над HTML с помощью кнопки для иллюстрации.
HTML:
<form>
<label for="userAge">Age:</label>
<input type="text" name="userAge" id="userAge" />
<input type="button" id="test" name="test" value="Test" />
</form>
JavaScript:
function validateForm() {
// get the input value once and use a variable
// this makes the rest of the code more readable
// and has a small performance benefit in retrieving
// the input value once
var userAge = document.forms[0].userAge.value;
// is it blank?
if (userAge === "") {
alert("Age field cannot be empty.")
return false;
}
// is it a valid number? testing for positive integers
if (!userAge.match(/^\d+$/)) {
alert("Your age input is not correct.")
return false;
}
// you could also test parseInt(userAge, 10) < 5
if (userAge < 5) {
alert("Your age input is not correct.")
return false;
}
alert("Name and Age are valid.");
return true;
}
// trigger validateForm() however you want, I did this as an example
document.getElementById("test").onclick = validateForm;
Здесь является jsFiddle продемонстрировать: http://jsfiddle.net/willslab/m2spX/6/
О регулярных выражений: userAge.match (/^\ d + $ /) возвращает true, если userAge содержит только положительное целое число. Начало/и окончание/указывают литерал регулярного выражения. \ d указывает только цифры ASCII. + соответствует одному или нескольким вхождениям предыдущего шаблона (цифры в этом случае).^указывает совпадение с начала, а $ указывает совпадение до конца. Таким образом,/^ \ d + $/является литералом регулярного выражения, сопоставляющим только цифры ASCII от начала до конца!
Также обратите внимание, что вы можете комбинировать последние два оператора if с помощью оператора OR (||). Я оставил эти изолированные, если вы хотите дать каждому уникальное сообщение о проверке.
Это будет выглядеть следующим образом:
if (!userAge.match(/^\d+$/) || userAge < 5) {
alert("Your age input is not correct.")
return false;
}
Не стесняйтесь задавать любые вопросы о коде, и я объясню. Надеюсь, это поможет!
, что случилось с синтаксисом? – Joseph
он продолжал говорить, когда я пытался опубликовать вопрос о том, что у меня был код в моем вопросе, который мне пришлось отформатировать, поэтому я в итоге просто вынул синтаксис, чтобы я мог опубликовать вопрос –
@jonathanmiller. Все, что вам нужно сделать, это выделить свой код а затем используйте Ctrl + K или нажмите '{}' на панели инструментов над текстовым полем для кодовых блоков - не нужно удалять важные части кода. – Nathan