簡體   English   中英

使用 javascript 到 php 進行表單驗證

[英]form validation with javascript to php

我在 W3Schools 中找到了這段代碼。 這是關於 Javascript 的表單驗證。

當用戶磁帶錯誤的郵件格式時,會出現警報。

當我檢查我在表單onsubmit="return validateForm();上看到的代碼時,function 在錯誤情況下返回 false。

所以我的問題是如何從 javascript 中獲取 boolean 值,以便在 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>

提前致謝。

阿里

您無法從 javascript 中獲取 boolean 值。 您需要做的是提前准備好一個錯誤 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 更改錯誤 div 的 HTML。

  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 就可以了。

if (..)
{
   document.getElementByID('error').InnerHTML = "Not a valid e-mail address!";
   return false;
}
else
{
   document.getElementByID('error').InnerHTML = "";
}

並在您的標記中添加:

<span id="error"></span>

除了使用 AJAX 之外,你不能。 請記住,PHP 是一種服務器端語言,而 JavaScript 在客戶端的瀏覽器中運行。 當 PHP 在瀏覽器中呈現頁面時,它已經完成了處理。 您需要的是兩層驗證 - JavaScript 驗證和 PHP 驗證。 為什么? 因為JavaScript可以在瀏覽器中關閉。 這使得它作為一種安全措施毫無用處。 JavaScript 驗證只能用作增強用戶體驗的一種方式。

最后,不要 go 到 w3schools。 它的許多信息是無效的(有關更多信息,請參見站點http://www.w3fools.com )。 相反,請使用 Mozilla 的開發者網絡: https://developer.mozilla.org/en-US/learn/

最簡單的就是在function中做顯示。 將警報替換為以下內容:-

document.getElementById("errormessage").innerHTML="不是有效的電子郵件地址";

您還需要在 HTML 中有一個帶有錯誤消息 ID 的 DIV。

我不會為此使用 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>

這樣您就不必將 go 返回到您的服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM