Пытаюсь проверить форму, но сталкиваюсь с постоянными проблемами. Вот код HTML:
<form id = "regForm" class = "form-group" method = "POST" action = "signup.php">
<div class = "col-md-12">
<h2>Job Pocket</h2>
</div>
<div class = "col-md-12">
<input placeholder = "email" class = "form-control"type = "text" name = "email" id = "email">
</div>
<div class = "col-md-12">
<input placeholder = "password" class = "form-control" type = "password" name = "password" id = "password">
</div>
<div class = "col-md-12">
<input placeholder = "confirm password" class = "form-control" type = "password" name = "confirmpass" id = "confirmpass">
</div>
<div class = "container">
<div class = "row">
<div class = "col-md-6">
<input placeholder = "first name" class = "form-control" type = "text" name = "first_name" id = "first_name">
</div>
<div class = "col-md-6">
<input placeholder = "last name" class = "form-control" type = "text" name = "last_name" id = "last_name">
</div>
</div>
</div>
<div class = "col-md-12">
<input type = "submit" onclick = "return validation()"class = "btn btn-primary"name = "submitsignup" id = "submitsignup" value = "submit">
</div>
<hr>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
<p id = "mg"></p>
</div>
JavaScript:
<script type = "text/javascript">
function validation(){
if (document.getElementById("email").value= = "" || document.getElementById("password").value= = "" || document.getElementById("last_name").value= = "" || document.getElementById("first_name").value= = ""){
document.getElementById("mg").innerHTML = "Fill all fields";
return false;
}
var emails = document.getElementById("email").value;
else if (emails.indexOf('@') <= 0){
document.getElementById('mg').innerHTML = " ** @ Invalid Position";
return false;
}
else if ((emails.charAt(emails.length-4)!='.') && (emails.charAt(emails.length-3)!='.')){
document.getElementById('mg').innerHTML = " ** . Invalid Position";
return false;
}
else {
document.getElementById("regForm").submit();
}
}
</script>
Форма продолжает отправляться сама. Он работает для первого оператора if, но после этого игнорирует два else if и отправляет себя. Даже если я закомментирую это утверждение, оно все равно отправляется на signup.php.
document.getElementById("regForm").submit();
На данный момент я понятия не имею, почему он отправляется, поэтому я также добавляю php-код.
if (isset($_POST['submitsignup'])){
$date = array();
if ($_POST['email']=='' || $_POST['password']=='' || $_POST['first_name']=='' || $_POST['last_name']==''){
$template->error = "Please fill all fields";
}}
Я добавил этот фрагмент кода в файл signup.php для дополнительной проверки, но я заметил, что strightup отправляется в файл signup.php.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Обновлено: обновленный ответ на обновленный вопрос
Ваша проблема может быть связана с тем, что у вас есть эта строка кода:
var emails = document.getElementById("email").value;
перед elseif, что может нарушить поток if elseif.
Попробуйте вместо этого использовать этот код:
function validation(){
var emails = document.getElementById("email").value;
if (emails= = "" || document.getElementById("password").value= = "" || document.getElementById("last_name").value= = "" || document.getElementById("first_name").value= = ""){
document.getElementById("mg").innerHTML = "Fill all fields";
return false;
}
else if (emails.indexOf('@') <= 0){
document.getElementById('mg').innerHTML = " ** @ Invalid Position";
return false;
}
else if ((emails.charAt(emails.length-4)!='.') && (emails.charAt(emails.length-3)!='.')){
document.getElementById('mg').innerHTML = " ** . Invalid Position";
return false;
}
else {
document.getElementById("regForm").submit();
}
}
@ahsan, так как это всего лишь опечатка, лучше бы удалить вопрос. На самом деле это никого ничему не учит на будущее.
@AmmoPT, пожалуйста, не отвечайте на вопросы не по теме, пометьте их как таковые.
Подождите, я исправил это, но проблема все еще остается
@ahsan Обновил ответ, попробуйте, если хотите.
Я люблю тебя, братан. Большое спасибо
@Luca Я не знал, что опечатки считаются не по теме (я новичок в игре с ответами), я воздержусь от этого в будущем. Однако, поскольку к этому ответу было добавлено продолжение, я хочу его сохранить.
@ADyson Я не знал, что опечатки считаются не по теме (я новичок в игре с ответами), я воздержусь от этого в будущем. Однако, поскольку к этому ответу было добавлено продолжение, я хочу его сохранить.
Попробуйте:
<input type = "button"
вместо:
type = "submit"
Обновлено: в противном случае ваша функция .submit () бесполезна. -2? Скажите, зачем использовать .submit (), если форма уже имеет тип отправки?
Это тип submit, так зачем использовать .submit ()? В любом случае форма отправит причину type = "submit"
Теперь он вообще не сдается
Вы можете отлаживать, вставляя console.info в каждый if / else, если проверить, почему ваше последнее условие не работает, тогда
Если бы вы проверили наличие ошибок и консоль, вы бы обнаружили, что причиной этого была простая типографская ошибка, которая не соответствует политике Stack.