多种字段类型的Javascript表单验证

时间:2013-04-30 15:59:32

标签: javascript html forms validation

道歉,如果这是任何简单的,我对Javascript知识不大。

当前问题/项目的背景

带有文本字段,复选框和单选按钮的简单HTML表单

提交表单会将所有字段传递给主验证函数,该函数将逐步执行每个字段,然后将这些字段传递给相关验证函数(空验证,电子邮件检查等)

主要表单验证功能如下(我已根据我正在建立的公司的要求更改了某些内容的名称)

function formvalidation(thisform)
{
with (thisform)
{
if (emptyvalidation(CompName,"Please Enter your name")==false) {CompName.focus(); return false;};
if (emailvalidation(CompEmail,"Please provide a valid Company Email Address")==false)   {CompEmail.focus(); return false;};
if (emptyvalidation(CompEmail,"Please provide a valid Company Email Address")==false)     {CompEmail.focus(); return false;};
if (emptyvalidation(Company,"Please Enter Your Company Name")==false) {Company.focus(); return false;};
if (emptyvalidation(CompWebsite,"Please Enter Your Company's Website")==false) {CompWebsite.focus(); return false;};
if (emptyvalidation(CustName,"Please Enter an Agents name")==false) {CustName.focus(); return false;};
if (emailvalidation(CustEmail,"Please provide a valid Email Address")==false) {CustEmail.focus(); return false;};
if (emptyvalidation(CustEmail,"Please provide a valid Email Address")==false) {CustEmail.focus(); return false;};
if (emptyvalidation(CustCompany,"Please Enter The Agency Name")==false) {CustCompany.focus(); return false;};
if (emptyvalidation(CustWebsite,"Please Enter The Agents Website")==false) {CustWebsite.focus(); return false;};
if (checkCheckBoxes(use,"Please Select At Least One Option For Intended Data Use")==false) {use.focus(); return false;};
if (checkCheckBoxes(database,"Please Select An Option For Database Usage")==false) {database.focus(); return false;};
}
} 

Ok所以其他所有函数都能正常工作,空验证如下:

function emptyvalidation(entered, alertbox)
{
with (entered)
{
if (value==null || value=="")
{if (alertbox!="") {alert(alertbox);} return false;}
else {return true;}
}
} 

我目前遇到的问题是要验证复选框,如果填写了至少一个复选框,我必须验证的功能如下

function checkCheckBoxes(entered, alertbox) {
    if (
    entered.checked == false) 
    {
        return false;
    } else {    
        return true;
    }
}

基本上我们有2组复选框1组称为使用一组称为数据库

每个小组至少需要选择一个选项进行验证。

所以我试图将信息传递给上面的函数,就像它传递给其他函数一样

目前,这两个字段基本上完全忽略了验证。

任何帮助都会非常感激

1 个答案:

答案 0 :(得分:0)

第一个尝试entered.value?根据我的经验,with并不总是按预期工作。

来自this page的关于Mozilla开发者网络的报道:

  

建议不要使用with,并且在ECMAScript 5严格模式下禁止使用{

}。

对于该复选框,请尝试删除== false比较,然后使用if(entered.checked)