Проверка формы Javascript не работает из-за опечаток

0

HTML

<form name="registerForm" action="/user/register.cgi" method="post" onsubmit="validateRegisterForm()">
  <table>
    <tbody>
      <tr>
        <td><input type="text" name="firstname" placeholder="First Name"></td>
      </tr>
      <tr>
        <td><input type="text" name="lastname" placeholder="Last Name"></td>
      </tr>
      <tr>
        <td><input type="email" name="email" placeholder="Email"></td>
      </tr>
      <tr>
        <td><input type="password" name="password" placeholder="Password"></td>
      </tr>
      <tr>
        <td><input type="password" name="confirmPassword" placeholder="Confirm Password"></td>
      </tr>
      <tr>
        <td><input type="submit" value="Register Details"></td>
      </tr>
    </tbody>
  </table>
</form>

Javascript

function validateRegisterForm(){
var fname=document["registerForm"]["firstname"].value;
var lname=document["registerForm"]["lastname"].value;
var email=document["registerForm"]["email"].value;
var atpos=email.indexOf("@");
var dotpos=email.lastIndexOf(".");
var pass=document["registerForm"]["password"].value;
var passlen = pass.length;
var confpass=document["registerForm"]["cofirmPassword"].value;

if (fname==null || fname=="")
  {
  alert("Please enter a First Name!");
  return false;
  }
else if (lname==null || lname=="")
  {
  alert("Please enter a Last Name!");
  return false;
  }
else if (email==null || email=="")
  {
  alert("Please enter a email!");
  return false;
  }
else if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  alert("Please enter a valid email address!");
  return false;
  }
else if (pass==null || pass=="")
  {
  alert("Please enter a Password!");
  return false;
  }
else if (6<=passlen<=15)
  {
  alert("Password needs to be to have a lenght of 6-15!");
  return false;
  }
else if (pass!=confpass)
  {
  alert("Passwords do not match!");
  return false;
  }
}
  • 0
    onsubmit="ValidateRegisterForm()" достаточно. Нет необходимости return туда
  • 1
    это ужасная проверка, используйте рамки проверки.
Показать ещё 4 комментария
Теги:
validation
forms

3 ответа

1
Лучший ответ

В вашем коде есть некоторые ошибки

cofirmPassword должно быть confirmPassword

должно быть

     var confpass=document["registerForm"]["confirmPassword"].value;

Вместо

      var confpass=document["registerForm"]["cofirmPassword"].value;

ОБНОВИТЬ

Ваши ошибки

x.length должен быть email.length

(6<=passlen<=15) должно быть (passlen < 6 || passlen > 15)

Обновленный рабочий DEMO

  • 0
    спасибо, похоже, я сделал несколько опечаток при копировании, но это не все поля, а только эта. спасибо, что нашел его, хотя.
  • 0
    @ user3258090, раньше были некоторые ошибки, но после твоей правки есть только одна :).
Показать ещё 8 комментариев
0

ваш код JavaScript неправильный, попробуйте этот

function validateRegisterForm(){
  var fname=document.getElementByName["registerForm"][0].value;
  var lname=document.getElementByName["registerForm"][0].value;
  var email=document.getElementByName["registerForm"][0].value;
  var atpos=email.indexOf("@");
  var dotpos=email.lastIndexOf(".");
  var pass=document.getElementByName["registerForm"][0].value;
  var passlen = pass.length;
  var confpass=document.getElementByName["registerForm"][0].value;

 if (fname==null || fname=="")
 {
   alert("Please enter a First Name!");
   return false;
 }
  else if (lname==null || lname=="")
  {
    alert("Please enter a Last Name!");
    return false;
   }
  else if (email==null || email=="")
  { 
    alert("Please enter a email!");
    return false;
  }
  else if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {  
   alert("Please enter a valid email address!");
   return false;
  }
  else if (pass==null || pass=="")
  {
   alert("Please enter a Password!");
   return false;
  }
  else if (6<=passlen<=15)
  {
    alert("Password needs to be to have a lenght of 6-15!");
    return false;
  }
   else if (pass!=confpass)
   {
     alert("Passwords do not match!");
     return false;
   }
}
  • 0
    нет, это не похоже на работу
  • 0
    когда вы устанавливаете переменные в начале, как он узнает, какой элемент в форме это?
-1

Сегодня, во времена HTML5, предпочтительнее использовать новые механизмы проверки, встроенные в браузеры. Общий подход состоит в том, чтобы определить функцию проверки ограничений на каждое свойство (желательно в классе модели в приложении MVC на основе JavaScript, например User.checkEmail) и назначить его через функцию HTML5 setCustomValidity в качестве setCustomValidity событий для input событий для элементов ввода, поэтому пользователь получает немедленную обратную валидацию при вводе пользователя, например, в

emailInpEl.addEventListener("input", function () { 
  emailInpEl.setCustomValidity( User.checkEmail( emailInpEl.value).message);
});

Таким образом, всякий раз, когда строка, представленная выражением User.checkEmail(emailInpEl.value).message, пуста, все в порядке. В противном случае, если это сообщение представляет собой сообщение об ошибке, браузер указывает на нарушение ограничений для пользователя путем маркировки соответствующего поля формы (обычно с красной рамкой) и отображения сообщения об ошибке.

Вы можете больше узнать об использовании программных методов проверки HTNL5 в этом учебнике.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню