【问题标题】:How to not run php script upon failed javascript validation?javascript验证失败后如何不运行php脚本?
【发布时间】:2014-12-03 09:09:07
【问题描述】:

我有一个带有 onsubmit = "return validateForm()" 的简单 html 注册表单,其中 validateForm() 是 javascript,以确保输入格式正确,并且电子邮件和密码字段与其确认字段匹配。

表单操作设置为 add.php。 add.php 将输入添加到 mysql 数据库中。 javascript 和 php 都可以正常工作,但是即使 javascript 会警告诸如“密码太短”之类的错误。无论如何都会运行 php 脚本,并在数据库中创建一个新条目。

我希望 php 脚本仅在成功的 javascript 验证后运行,并且如果任何验证失败,用户仍留在同一页面上,这是如何完成的?

如果需要,我可以添加代码,但我认为这里的答案是通用的。

编辑:

例如这里是验证名称字段的代码:

function checkName()
{
    var fName = document.getElementById("firstName");
    var lName = document.getElementById("lastName");
    if (fName.value.length >= 2 && fName.value.match(/^[A-Za-z]+$/) && lName.value.length >= 2 && lName.value.match(/^[A-Za-z]+$/))
        {
            return true;
        }
    else
        {
            return false;
        }
}

function validateForm(){
if (checkName() == false)
        {
            alert("First and Last Name must be at least 2 characters long and contain  only alphabetic characters");
        document.getElementById("fName").focus();
        document.getElementById("fName").select();
        return false;
    }

}

【问题讨论】:

  • validateForm() 在错误时返回 false。此外,在进行插入之前,您也应该在 php 中验证这些内容,因为绕过 javascript 验证非常容易。
  • 这只是一个学校作业,安全无关。我的 validateForm() 也确实在失败时返回 false。我将使用示例函数编辑原始帖子。
  • 如果你使用 onclick="return validateForm()" 调用你的函数,它应该像 jKuhn 指出的那样阻止表单提交

标签: javascript php html mysql


【解决方案1】:

firstName 还是fName?如果fName ID 不存在,该函数将遇到错误并退出而不返回任何内容,导致显示警报,但仍提交表单。

【讨论】:

  • id 是 firstName 我刚刚调用了变量 fName。那应该没关系吧?我看到我的 focus() 和 select() 使用了错误的 id,但我将它们修复为没有成功。
  • getElementById的参数必须完全匹配元素的ID,而不是变量。
  • 是的,元素的 ID 是 firstName 和 lastName。但是,我做了,只是将每个实例(包括 var 名称)更改为 firstName 和 lastName,它似乎有效。我不明白为什么如果我想要的话我可以调用 var poopmonkey?
  • 如果您在浏览器控制台中运行这两行会发生什么?某些原因导致警报和返回之间出现错误。
猜你喜欢
  • 1970-01-01
  • 2016-06-26
  • 2014-10-13
  • 1970-01-01
  • 2016-02-28
  • 2015-02-01
  • 2012-05-08
  • 2011-04-13
  • 2014-10-21
相关资源
最近更新 更多