PHP和HTML表单中的javascript onsubmit未执行

4
我有一个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在评论中提到的问题是javascript本身的问题。虽然有点奇怪,因为同样的javascript代码在没有PHP和我的本地机器上都可以工作。需要考虑很多因素...感谢大家抽出时间来看看我的问题!


2
你能发布一下你的 JavaScript 代码吗? - chapkom
2
你到底想传递什么给你的Javascript函数?因为现在,你告诉它你正在传递一个名为details的变量,而不是你打算传递的字符串变量'details'。 - Ally
1
@Ally - 那可能是问题所在,没有办法看到这个JS代码。 - orourkek
顺便问一句,为什么你使用exit();而不是return?ValidateForm(details)是否返回false? - Jonathan DS
@Jason 进一步的故障排除似乎指向了我的 JavaScript 中的正则表达式(未发布)。看起来错误经常出现在意料之外的地方 :) 非常感谢您使用错误控制台的提示!如果您发布您的评论,我很乐意将其接受为答案。 - user425727
显示剩余5条评论
2个回答

2
以下是你需要了解的有关你正在构建的函数的一些要点。
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,很抱歉你这么想。 - Starx
它确实以某种方式回答了他的问题,但在您编辑之前,您甚至没有解释他需要做什么...通过对OP的评论,您可以看到我同意您的解决方案,但当时这里并没有实际的答案来回答他的问题。 - orourkek

0

评论转换为答案

"我敢打赌肯定是JavaScript错误。打开错误控制台,在火狐浏览器中按下ctrl+shift+j键。"

很高兴能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接