【问题标题】:PHP & HTML Form with javascript onsubmit not executed未执行带有 javascript onsubmit 的 PHP 和 HTML 表单
【发布时间】:2012-04-11 17:19:09
【问题描述】:

我有一个要求用户输入的 HTML 表单。 javascript 函数用于验证表单,应在执行 PHP 代码之前触发(使用 onsubmit)。 (js文件在标头<script type="text/javascript" src="js/javascript.js"></script>中引用)

但是 javascript 永远不会执行,而是 PHP 代码执行并且(正确地)包含新文件。

如何让 javascript 按要求执行?

HTML 文件:

<form name="details" action="" method="post" 
     onSubmit="return ValidateForm(details);">
...
<input type="submit" name="post-this-form" value="Next"/>
</form>

PHP 文件:

if (isset($_POST['post-this-form']) and 
     $_POST['post-this-form'] == 'Next')
{
...
some php 
...
include 'shipping-details.html.php';
exit();
}

编辑

这是所要求的 javascript。它已经过测试和工作,没有涉及任何 PHP。通过传递details(表单的名称),我使所有表单字段都可以访问。

function ValidateForm(details)
        {
        var firstName=document.forms.details.firstName.value;
        var lastName=document.forms.details.lastName.value;
        var streetAddress=document.forms.details.streetAddress.value;
        var town=document.forms.details.town.value;
        var city=document.forms.details.city.value;
        var zip=document.forms.details.zip.value;
        var country=document.forms.details.country.value;       
        var creditCard=document.forms.details.creditcard.value;                 

                ...

        //Checks firstName
        if ((firstName=="")||(!firstName.match(alphabetExpression)))
            {
            alert ("Invalid first name, please re-enter");
            return false;
            }
                 ...

        //Checks creditCard
        if ((creditCard=="")||(!creditCard.match(numericExpression))||(creditCardLength!=16))
            {
            alert ("Invalid credit card entry, please re-enter");
            return false;
            }       
        }// end function

编辑 2

我在 javascript 的开头添加了 alert ("Hi"); 并且警报从未出现,这让我认为该函数根本没有执行。

编辑 3

我最初怀疑这个问题可能是由于 PHP 错误造成的。正如 Jason 在他的 cmets 中提到的,问题出在 javascript 本身。这是一个有点奇怪的想法,因为相同的 javascript 代码在没有 PHP 和我的本地机器上“独立”工作。需要考虑的因素太多了...感谢 All 抽出时间来看看我的问题!

【问题讨论】:

  • 能否请您发布您的javascript代码?
  • 尝试写onSubmit="return ValidateForm(this);"而不是onSubmit="return ValidateForm(details);"
  • 您到底打算将什么传递给您的 Javascript 函数?因为现在,你告诉它你传递了一个名为 details 的变量,而不是变量字符串 'details',我猜这就是你想要的。
  • @Ally - 这可能是问题所在,看不到 js
  • 在旁注中,你为什么退出();而不是返回?是 ValidateForm(详细信息);返回 false?

标签: php javascript forms


【解决方案1】:

以下是关于您尝试构建的功能您必须了解的几件事

function ValidateForm() {
     this; // this contains the form name no need for any variable declaration

     return true; // or false This is very important to continue the execution
                  // false stops the submittion
}

当您解决这两个问题时,它应该可以正常工作。

【讨论】:

  • @orourkek,很抱歉你这么认为。
  • 它确实以某种方式回答了他的问题,但是在您进行编辑之前,您甚至没有解释他必须做什么...通过 OP 上的 cmets,您可以看到我同意您的看法解决方案,但当时没有对他的问题的实际答案
【解决方案2】:

评论转换为答案

“我敢打赌有一个 javascript 错误。打开错误控制台。在 firefox 中按 ctrl+shift+j。”

很高兴有帮助。

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多