【发布时间】:2017-08-09 14:15:04
【问题描述】:
我正在设计一个允许个人资料注册的电子商店。我需要对注册表单进行 Javascript 和 PHP 验证。 (因此,当任何字段为空时,我需要收到一条弹出消息,让我知道哪个特定字段为空 + 在所需字段旁边的屏幕上显示一条可视消息,以告知用户他们需要在哪里更正问题)
到目前为止它不起作用,因为我的 JS 验证表单激活了 onsubmit 并且我的 PHP 正在运行。我意识到 onsubmit 在行动之前激活,因此不允许“行动”通过。
我尝试将其从 'action' 更改为 'onclick',但 onsubmit 也会先激活并且不允许 PHP 工作。
这是我的表单代码(我只包括了名字部分,所以不会太长)
<form method="post" onclick="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" name="myForm" onsubmit="return validateForm()" style="border:1px solid #ccc">
<label><b>First Name</b></label>
<input type="text" name="firstName" placeholder="">
<?php echo $fnameErr;?>
<button type="submit" class="signupbtn" name="submit">Submit</button>
这是我的 PHP 代码:
<?php
$fnameErr = "";
$fname = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["firstName"])) {
$fnameErr = "Name is required";
}
else {
$fname = test_input($_POST["firstName"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
我知道 PHP 代码有效,因为如果我删除 JS 验证,它会按预期工作。我很感激帮助。
如果我需要添加任何额外信息,请告诉我。此外,这不是我的第一站。我一直在谷歌搜索并试图弄清楚如何解决这个问题几个小时无济于事......
这是被调用的 JS 函数(也可以按预期工作)这也是缩短版本,仅包含名称,其余工作相同,更多 if 语句:
function validateForm() {
"use strict";
var fn = document.forms.myForm.firstName.value;
var ln = document.forms.myForm.lastName.value;
var em = document.forms.myForm.email.value;
var phone = document.forms.myForm.phone.value;
var pass = document.forms.myForm.psw.value;
var pass2 = document.forms.myForm.psw2.value;
if (fn === "") {
window.alert("First name must be filled out");
return false;
}
}
【问题讨论】:
-
如果您知道 PHP 代码有效,那么向我们展示 javascript 不是明智之举吗?
-
请发布您的javascript代码
-
@Salketer 我添加了 JS 代码,但它也能正常工作。正是这两者的结合使 PHP 无法正常工作。
标签: javascript php forms validation