OnSubmit Javascript不覆盖提交动作


OnSubmit Javascript not overriding submit action

我正试图建立一个网站与webform。我正在使用Godaddy的默认webform PHP,我不确定如何验证所需字段的表单。

我希望用户在验证之前不能提交表单。我发现其他用户在线提交的JavaScript文件解决了这个问题,但我似乎无法让它工作。

<script language="javascript" type="text/javascript">
function checkForm() {
    if (form.FirstName.value == "") {
        alert("Please enter your first name");
        form.FirstName.focus();
        return false;
    }
    if (form.LastName.value == "") {
        alert("Please enter your last name");
        form.LastName.focus();
        return false;
    }
    var email = form.email.value;
    if (email.indexOf('@') == -1) {
        alert("Plelase enter valid email");
        form.email.focus();
        return false;
    }
    return true;
}
</script>

下面是格式:

<form onsubmit="return checkForm()" action="/webformmailer.php" method="post"> 
<input type="hidden" name="subject" value="Submission" /> 
<input type="hidden" name="redirect" value="thankyou.html" />
<span>First Name:</span><br>
<input type="text" name="FirstName"/><br>
<span>Last Name:</span><br>
<input type="text" name="LastName" /><br>
<span>*Email:</span><br>
<input type="text" name="email" /><br>
<span>*Comments:</span><br>
<textarea name="comments" cols="40" rows="10">
</textarea><br>
<input type="submit" name="submit" value="submit"/> <span id ="required">*required field</span>
<input type="hidden" name="form_order" value="alpha"/> <input type="hidden" name="form_delivery" value="daily"/> <input type="hidden" name="form_format" value="html"/> 

我尝试不输入任何内容提交,它将我重定向到thank you.

form在函数中没有定义。有几种方法可以处理这个问题。最简单的是将return checkForm()改为return checkForm(this)

function checkForm(form) {

在表格中,将checkForm()改为checkForm(this)。然后,在javascript中,将function checkForm() {更改为function checkForm(form) {

你忘了两件事:首先,请添加 name ="形式"

<form name="form" onsubmit="return checkForm()" action="/webformmailer.php" method="post"> 
第二,你写错了关闭表单,请将此代码添加到HTML 的末尾
</form>

你的HTML看起来像:

<form name="form" onsubmit="return checkForm()" action="/webformmailer.php" method="post"> 
    <input type="hidden" name="subject" value="Submission" /> 
    <input type="hidden" name="redirect" value="thankyou.html" />
    <span>First Name:</span><br>
    <input type="text" name="FirstName"/><br>
    <span>Last Name:</span><br>
    <input type="text" name="LastName" /><br>
    <span>*Email:</span><br>
    <input type="text" name="email" /><br>
    <span>*Comments:</span><br>
    <textarea name="comments" cols="40" rows="10"></textarea><br>
    <input type="submit" name="submit" value="submit"/> 
    <span id ="required">*required field</span>
    <input type="hidden" name="form_order" value="alpha"/> 
    <input type="hidden" name="form_delivery" value="daily"/> 
    <input type="hidden" name="form_format" value="html"/> 
</form>

另一件事是在javascript中,检查电子邮件地址的函数是不正确的,正确的是:

var email = form.email.value;
var re = /^['w-]+('.['w-]+)*@(['w-]+'.)+[a-zA-Z]{2,7}$/;
if (!email.match(re) || !email) {
  // incorrect email address
}

新脚本将是:

<script language="javascript" type="text/javascript">
function checkForm() {
    if (form.FirstName.value == "") {
        alert("Please enter your first name");
        form.FirstName.focus();
        return false;
    }
    if (form.LastName.value == "") {
        alert("Please enter your last name");
        form.LastName.focus();
        return false;
    }
    var email = form.email.value;
    var re = /^['w-]+('.['w-]+)*@(['w-]+'.)+[a-zA-Z]{2,7}$/;
    if (!email.match(re) || !email) {
        alert("Plelase enter valid email");
        form.email.focus();
        return false;
    }
    return true;
}
</script>

古德勒克!