проверка формы с помощью JavaScript на PHP - PullRequest
9 голосов
/ 29 июня 2011

Я нахожу этот код в W3Schools. Речь идет о проверке формы с помощью Javascript.

Когда пользователь записывает на почту неправильный формат почты, появляется предупреждение.

Когда я проверяю код, который вижу в форме onsubmit="return validateForm();, функция возвращает false в случае ошибки.

Поэтому мой вопрос заключается в том, как получить логическое значение из javascript, чтобы использовать его в PHP для записи сообщения об ошибке вместо использования окна сообщения.

Это мой код:

<html>
<head>
    <script type="text/javascript">
    function validateForm()
    {
    var x=document.forms["myForm"]["email"].value
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
      {
      alert("Not a valid e-mail address");
      return false;
      }
    }
    </script>
    </head>

    <body>
    <form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
    Email: <input type="text" name="email">
    <input type="submit" value="Submit">
    </form>
</body>

</html>

Заранее спасибо.

Али

Ответы [ 5 ]

7 голосов
/ 30 июня 2011

Вы не можете получить логическое значение из JavaScript. Вам нужно заранее подготовить div div. Примерно так:

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<div id="error"></div>
<input type="submit" value="Submit">
</form>

Добавьте CSS, чтобы скрыть это. Затем в форме проверки используйте javascript, чтобы изменить HTML-код ошибки div.

  if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
      document.getElementById("error").innerHTML="Not a valid e-mail address";
      return false;
  }

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

6 голосов
/ 29 июня 2011
if (..)
{
   document.getElementByID('error').InnerHTML = "Not a valid e-mail address!";
   return false;
}
else
{
   document.getElementByID('error').InnerHTML = "";
}

и в вашей разметке добавьте:

<span id="error"></span>
3 голосов
/ 29 июня 2011

Я бы не использовал PHP для этого.

<html>
<head>
<script type="text/javascript">
function validateForm()
{
var x=document.forms["myForm"]["email"].value
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  document.getElementById('errorMsg').style.display = 'block';
  return false;
  }
}
</script>
</head>

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<input type="submit" value="Submit">
<div id="errorMsg" style="display: none;">Not valid email</div>
</form>
</body>

</html>

Таким образом, вам не придется возвращаться на свой сервер.

3 голосов
/ 29 июня 2011

Самое простое - сделать отображение в функции. Замените предупреждение чем-то вроде: -

document.getElementById ("errormessage"). InnerHTML = "Недействительно адрес электронной почты ";

Вам также понадобится DIV в вашем HTML с идентификатором errormessage.

3 голосов
/ 29 июня 2011

Вне использования AJAX вы не можете.Помните, что PHP - это язык на стороне сервера, и что JavaScript запускается на клиенте в браузере.К тому времени, когда PHP отображает страницу в браузере, она уже обработана.Что вам нужно, это два уровня проверки - проверка JavaScript и проверка PHP.Зачем?Потому что JavaScript можно отключить в браузере.Это делает его бесполезным в качестве меры безопасности.Проверка JavaScript должна использоваться только для повышения удобства работы пользователя.

Наконец, не ходите в w3schools.Большая часть информации недействительна (для получения дополнительной информации см. Сайт http://www.w3fools.com).Вместо этого используйте Сеть разработчиков Mozilla: https://developer.mozilla.org/en-US/learn/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...