Проверка формы Javascript возвращает ложную ошибку - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь заполнить форму, и, пока появляется предупреждение, оно все еще отправляется.Как мне заставить его прекратить отправку ??

function validate() {
  var first = document.register.first.value;
  if (first == "") {
    alert("please enter your name");
    first.focus();
    return false;
  }
  return (true);
}
<body>
  <form name="register" action="testform.php" onsubmit="return(validate());">
    <input type="text" name="first" />
    <button type="submit" />Submit
  </form>
</body>

Ответы [ 4 ]

0 голосов
/ 21 декабря 2018

Вы добавили круглые скобки в return (), затем return(validate()), который мы используем () при вызове функции, поэтому она может рассмотреть return пользовательскую функцию, которая возвращает неопределенное значение, а при возврате неопределенного она игнорирует и продолжает выполнение,Как бы ни вызывался валидатор, но его ответ не возвращается в форму.

Фиксированная версия:

<head>
<script>
function validate(e) {
   var first = document.register.first.value;
   console.log(document.register.first)
    if( first == "" ) {
        alert( "please enter your name" ) ;
        return false;
    }
return(true);
}
</script>
</head>
<body>
    <form name="register" action="testform.php" onsubmit="return validate()">
        <input type="text" name="first" />
        <button type="submit" >sbmit</button>
    </form>
</body>
0 голосов
/ 21 декабря 2018

Я думаю, проблема в кнопке type="submit".Попробуйте изменить его на type="button", с помощью функции onclick, которая отправляет вашу форму , если validate() возвращает true.

edit: Арджан делает хорошее замечание, и вы должныиспользуйте required.Но это отвечает почему форма отправляла.

0 голосов
/ 21 декабря 2018

В вашем коде есть несколько ошибок.

  1. <button> элемент не является самозакрывающимся
  2. вы вызываете focus для значения ввода вместо вводаэлемент, который выдает исключение

function validate() {
   var input = document.register.first;
   var text = input.value;   
    if( text == "" ) {
        alert( "please enter your name" ) ;
        input.focus();
        return false;
    }
    return true;
}
0 голосов
/ 21 декабря 2018

Вам лучше использовать атрибут required в интерфейсе вещей.Он «заставит» пользователя вводить текст в поле ввода, прежде чем он сможет его отправить.Обратите внимание, что я заключил в кавычки слово «сила», потому что можно просто отредактировать HTML-код и обойти обязательный атрибут HTML.Поэтому убедитесь, что вы проверяете пользовательский ввод также на стороне PHP .

Существует множество учебных пособий и примеров для проверки форм PHP, таких как this fromW3Schools и этот из среднего.

<form name="register" action="testform.php">
  <input type="text" name="first" required/>
  <input type="submit" value="Submit"/>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...