我有一个HTML表单要求用户输入。一个JavaScript函数的目的是验证表单,应该在执行PHP代码之前触发(使用onsubmit)。 (js文件在标头中引用
然而,JavaScript从未被执行,而是PHP代码被执行,并且(正确地)包含了新文件。
如何使JavaScript按要求执行?
HTML文件:
<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和我的本地机器上都可以工作。需要考虑很多因素...感谢大家抽出时间来看看我的问题!