Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как правильно сделать валидацию? (https://javascript.ru/forum/misc/63816-kak-pravilno-sdelat-validaciyu.html)

Sokoljr 01.07.2016 13:22

как правильно сделать валидацию?
 
не работает корректно, а добавить проверку на другие формы, так вообще ничего не работает



<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <title>Watch</title>
    
</head>
<body>
	<form name="add">
		<p>Введите имя:</p>
		<input id="name" type="text">
		<p>Введите фамилию:</p>
		<input id="surname" type="text">
    	<p>Введите возраст:</p>
		<input id="age" type="text">
		<p>Введите свой email:</p>
		<input id="email" type="text">
		<p>Введите свой пол:</p>
		<input id="gender" type="text">
    	<input id="addForm" type="submit" value="Отправить">
	</form>	
	<p id="result"></p>
	
<script>
var form = document.forms.add;

form.onsubmit = function(e) {
    e.preventDefault();
    var result;
    
    function age() {
        var number;
        number = document.getElementById("age").value;
        if (isNaN(number) || number < 1 || number > 99) {
            result = "Неверный возраст";
        } else {
            result = " ";
        }
        document.getElementById('result').innerHTML = result;
    }
    age();
    this.submit();
}
</script>
</body>
</html>

laimas 01.07.2016 13:27

number < 1 || number > 99 - то есть, если годовалый ребенок пишет, то все в норме, а если 9 месячный, то не умеет писать, и аксакал за 100 лет не имеет права? :)

Sokoljr 01.07.2016 13:29

laimas,
ну это просто пример, к этому придира:( ться не стоит

рони 01.07.2016 13:30

Sokoljr,
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <title>Watch</title>

</head>
<body>
  <form name="add">
    <p>Введите имя:</p>
    <input id="name" type="text">
    <p>Введите фамилию:</p>
    <input id="surname" type="text">
    	<p>Введите возраст:</p>
    <input id="age" type="text">
    <p>Введите свой email:</p>
    <input id="email" type="text">
    <p>Введите свой пол:</p>
    <input id="gender" type="text">
    	<input id="addForm" type="submit" value="Отправить">
  </form>
  <p id="result"></p>

<script>
var form = document.forms.add;

form.onsubmit = age



    function age() {
        var number, result;
        number = +document.getElementById("age").value;
        if (isNaN(number) || number < 1 || number > 99) {
            result = "Неверный возраст";
       document.getElementById('result').innerHTML = result; }
        return !result
    }

</script>
</body>
</html>

laimas 01.07.2016 13:35

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

А чтобы обработчик работал для всех форм, нужно повесить его на каждую форму, то есть обойти их циклом и назначить для события onsubmit.

Sokoljr 01.07.2016 13:52

рони,
Корректно работать не будет, там выскакивает undefind постоянно

рони 01.07.2016 13:54

Цитата:

Сообщение от Sokoljr
Корректно работать не будет, там выскакивает undefind постоянно

не понимаю вас

Sokoljr 01.07.2016 13:55

рони,
при нажатии на кнопку, с условием что введен верный возраст, будет выскакивать undefind в диве с result на какие то доли секунды

рони 01.07.2016 13:57

Sokoljr,
убрал

Sokoljr 01.07.2016 14:04

рони,
спасибо


Часовой пояс GMT +3, время: 21:28.