2012-04-21 5 views
0
validate document.forms() 



if document.forms[0].userAge.value =="" 

    alert("Age field cannot be empty." 
     return false; 


if document.forms[0].userAge.value<5 

    alert"Your age input is not correct." 
    return false; 


if userage==isNumber 

    alert"Your age input is not correct." 
    return false; 



    alert"Name and Age are valid." 

    return true 





    <label for="userAge">Age:</label> 

    <input type="text" name="userAge" id="userAge" /> 

</div> 

Если это код у меня есть, как бы я сделать это так, что если кто-то, чтобы ввести нон номер в возрасте текстовом поле предупреждения придет вверх говорить «Ваш вход не является правильным»?форма проверки

+1

, что случилось с синтаксисом? – Joseph

+0

он продолжал говорить, когда я пытался опубликовать вопрос о том, что у меня был код в моем вопросе, который мне пришлось отформатировать, поэтому я в итоге просто вынул синтаксис, чтобы я мог опубликовать вопрос –

+2

@jonathanmiller. Все, что вам нужно сделать, это выделить свой код а затем используйте Ctrl + K или нажмите '{}' на панели инструментов над текстовым полем для кодовых блоков - не нужно удалять важные части кода. – Nathan

ответ

0

Я рекомендую использовать следующий Javascript, который не позволит нечисловым символам в текстовом поле.

function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
    { 
     return false; 
    } 
    return true; 
} 

<input type="text" id="userAge" name="userAge" onkeypress="return isNumberKey(event);"> 
0

Попробуйте это решение

<script language="javascript"> 
    function validate(){ 
    alert("validate ..."+document.forms[0].userAge.value); 
    if (document.forms[0].userAge.value == ""){ 
    alert("Age field cannot be empty."); 
    return false; 
    } 

    if (document.forms[0].userAge.value<5){ 
    alert("Your age input is not correct."); 
    return false; 
    } 
    //provide a way to validate if its numeric number..maybe using regexp 
    //if (isNumeric(userAge)){ 
    // alert("Your age input is not correct."); 
    // return false; 
    //} 
    //alert"Name and Age are valid." 
    return true; 
    } 
    </script> 

HTML, должен быть

<form> 
<div><label for="userAge">Age:</label> 
<input type="text" name="userAge" id="userAge" onblur="validate()"/> 
</div> 
</form> 
+0

http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric для цифровой проверки .. – Sanath

0

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; 
} 

Не стесняйтесь задавать любые вопросы о коде, и я объясню. Надеюсь, это поможет!

+0

Обратите внимание, что вы можете пропустить использование parseInt() и просто использовать userAge везде. Однако, если изменения будут изменены, вы можете получить странное поведение, особенно если вы попытаетесь isNaN с пустой строкой, если поле стало необязательным. Вы могли бы также объединить последние два утверждения if, я оставил их отдельно для ясности. –

+1

Вы должны, вероятно, проверить значение NaN, прежде чем сравнивать его с 5. (В любом случае, 'false === (NaN <5)'.) Также обратите внимание, что 'parseInt' вернет' number', как '14asd, 10' в качестве аргументов. Однако не знаю, как решить эту проблему. Возможно, это просто заменить значение html-input на результат обработанного номера '.toString()'. – elmigranto

+0

Согласен. Я тоже думал об этом, но оставил его как есть. Я хотел, чтобы это было просто, но вы совершенно правы в этом. –

0

использовать код ниже

if(isNaN(document.forms[0].userAge.value)){ 
    alert('This is not a number'); 


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