Я создал форму в HTML и использую событие onblur для каждого поля, и оно работает очень хорошо. Проблема в том, что когда я нажимаю кнопку отправки (которая отправляет данные сервлету), данные отправляются, даже если они недействительны. Вот пример.

<html>
<head>
<script>
function check()
{
    if(checkName()==true)
        return true;
    else{
        alert('vhvh');
        return false;
    }
}
function checkName()  
{   
    var uname=document.enq.Name.value;
    var letters = /^[A-Za-z, ]+$/;  
    if(uname.match(letters))  
    {   
        document.getElementById('Name').style.borderColor = "black";
        return true;
    }  
    else  
    {  
        document.getElementById('Name').style.borderColor = "red";
        //alert('Username must have alphabet characters only');  
        //uname.focus();  
        return false;
    }  
}
</script>
</head>
<body>
<form name="enq" method="post" action="Enquiry" onsubmit="check()">
<input class="textbox" id="Name"style="margin-top:10px;font-size:16px;" type="text" name="Name" placeholder="Full Name" onblur="checkName()" required /><br><br>
<input class="button" type="submit"> 
</form>
</body>
</html>

Как я могу решить эту проблему?

2
Parveen Kumar 8 Май 2016 в 16:50

2 ответа

Использовать

<input class="button" type="button">

И поместите событие onclick следующим образом:

<input class="button" type="button" onclick="this.submit()">

Так что вы можете манипулировать данными, прежде чем подименовывать их.

0
João Nobre 8 Май 2016 в 16:59

Есть событие onsubmit, которое позволяет вам контролировать отправку формы. Используйте его для вызова ваших функций проверки и только после этого решите, хотите ли вы разрешить пользователю отправлять форму. http://www.htmlcodetutorial.com/forms/_FORM_onSubmit.html

Вы должны использовать его следующим образом, если хотите предотвратить отправку формы:

<form onsubmit="return check()">
0
kmaork 8 Май 2016 в 18:12
Спасибо @Ni. Теперь я создал функцию, которая будет проверять, верны ли данные или нет, и она работает достаточно хорошо. Но все же как я могу ограничить отправку данных сервлету. Вот код моего нового метода. функция check () {если (checkName () == true && checkNumber () == true && ValidateEmail () == true) alert ('true'); еще предупреждение ('ложь'); }
 – 
Parveen Kumar
8 Май 2016 в 17:56
Если функция возвращает false, форма не будет отправлена.
 – 
kmaork
8 Май 2016 в 17:58
Я изменил ссылку в своем ответе на лучший сайт
 – 
kmaork
8 Май 2016 в 18:01
Это не беспокоит, даже при возврате false он отправляет данные.
 – 
Parveen Kumar
8 Май 2016 в 18:03
Пожалуйста, добавьте новый код к своему вопросу, чтобы я мог помочь
 – 
kmaork
8 Май 2016 в 18:04