JavaScript验证 - 不在文本框上工作

时间:2015-12-07 21:21:20

标签: javascript html forms validation onchange

尝试在表单上运行一些Javascript验证,但没有任何工作。应发出警报,阻止用户继续预订座位,但他们可以自由继续。我不确定我做错了什么,但看起来很基本。

如果有人可以查看我的代码,我将不胜感激。

文字输入表格>>>

<form method="POST" name="Customer_Details" action="Ice Cream.php">
    <h3> Full Name </h3>
    <p> Name - Full Name. </p>
    <input type="text" name="Name" oninput="nameCheck();" />

    <h3> Email Address </h3>
    <p> Email here please </p>
    <input type="text" name="Email" oninput="return(validateEmail());" />
    <input type="submit" name="submit" value="Book Tickets">
</form>

用于validateEmail()的Javascript;

var email = document.Customer_Details.Email;

function validateEmail(email)  
{  
    var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;  
    if(email.value.match(mailformat))  
    {  
        return true;  
    }  
    else  
    {  
        alert("You have entered an invalid email address. Please try again!");  
        email.focus();  
        return false;  
    }  
} 

2 个答案:

答案 0 :(得分:0)

您的var电子邮件不是验证电子邮件功能的参数。 此函数不需要任何参数:

function validateEmail()  
{  
    email = document.Customer_Details.Email;
    var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;  
    if(email.value.match(mailformat))  
    {  
        return true;  
    }  
    else  
    {  
        alert("You have entered an invalid email address. Please try again!");  
        email.focus();  
        return false;  
    }  
}

(但使用oniput会使输入电子邮件变得困难......)

答案 1 :(得分:0)

我认为你的问题是你的javascript验证是在错误的地方调用的。在提交表单时应该调用它。

此代码在我测试时有效:

HTML:

<form method="POST" name="Customer_Details" action="Ice Cream.php" onsubmit="return validateEmail()">
    <h3> Full Name </h3>
    <p> Name - Full Name. </p>
    <input type="text" name="Name">
    <h3> Email Address </h3>
    <p> Email here please </p>
    <input type="text" name="Email">
    <input type="submit" name="submit" value="Book Tickets">
</form>

JS:

function validateEmail() {
    var email = document.Customer_Details.Email;

    if(!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email.value)) {
        alert("You have entered an invalid email address");
        email.focus();
        return false;
    } else {
        return true;  
    }  
}