多个函数的Javascript验证?

时间:2011-03-24 06:33:10

标签: javascript javascript-events

我有一个表单的javascipt函数。代码是:

<script type="text/javascript">
function verify() {
    if (isNaN(document.form1.exp_amount.value) == true) {
        alert("Invalid Block Amount");
        return false;
    } else if ((document.form1.exp_name.value).length == 0) {
        alert("Block Exp is left Blank!");
        return false;
    } else if ((document.form1.exp_amount.value).length == 0) {
        alert("Block Amount is left Blank!");
        return false;
    } else {
        document.form1.submit();
        return true;
    }
}
</script>

现在我必须为它提供字母验证,我在单独的JS函数中有它:

<script language="javascript" >
function checkName() {
    re = /^[A-Za-z]+$/;
    if (re.test(document.exp_name.form1.value)) {
        alert('Valid Name.');
    } else {
        alert('Invalid Name.');
    }
}
</script>

如果我想在函数verify()中进行字母验证..我怎么能这样做?或者还有其他方法吗?

4 个答案:

答案 0 :(得分:1)

请将您的验证和表格更改为允许提交表格(如果有效),而不是错误。以下代码在我看来 canonical ,适用于所有支持正则表达式的浏览器(1996年在JS1.1中使用NS3.0引入) - 请注意,javascript不支持破折号名称,除非您在脚本中引用字段名称。代码不需要命名表单,因为它在调用(this)中传递表单对象,并将函数中的对象用作 theForm

<html>
<head>
<title>Canonical forms validation without jQuery</title>
<script type="text/javascript">
var validName = /^[A-Za-z]+$/;
function checkName(str) {
  return validName.test(str);
}

function verify(theForm) {
  // note: theForm["..."] is short for theForm.elements["..."];
  var amount = theForm["exp_amount"].value; 
  if(amount ==""){
    alert("Block Amount is left blank");
    theForm["exp_amount"].focus();
    return false;
  }
  if (isNaN(amount)) {
    alert("Invalid Block Amount");
    theForm["exp_amount"].focus();
    return false;
  }

  var name = theForm["exp_name"].value; 
  if(name.length==0) {
    alert("Block Exp is left Blank!");
    theForm["exp_name"].focus();
    return false;
  }
  if(!checkName(name)) {
    alert("Block Exp is invalid!");
    theForm["exp_name"].focus();
    return false;
  }
  return true;
}
</script>
</head>
<body>
<form onsubmit="return verify(this)">
Amount: <input type="text" name="exp_amount" value="" /><br />
Name: <input type="text" name="exp_name" value="" /><br />
<input type="submit" />
</form>
</body>
</html>

答案 1 :(得分:0)

<script type="text/javascript">
function verify()
{
    if(isNaN(document.form1.exp_amount.value)==true)
    {
         alert("Invalid Block Amount");
         return false;
    }
    else if((document.form1.exp_name.value).length==0)
    {
         alert("Block Exp is left Blank!");
         return false;
    }
    else if((document.form1.exp_amount.value).length==0)
    {
         alert("Block Amount is left Blank!");
         return false;
    }
    else if(!(/^[A-Za-z]+$/.test(document.form1.exp_amount.value))) //ADD THIS
    {
        alert('Invalid Name');
        return false;
    }

     document.form1.submit();
     return true;
}
</script>

答案 2 :(得分:0)

只需在checkName函数中返回false或true:

function checkName()
{
    re = /^[A-Za-z]+$/;
    if(re.test(document.exp_name.form1.value))
    {
        alert('Valid Name.');
        return true;
    }
    else
    {
        alert('Invalid Name.');
        false;
    }
}

然后调用它并检查结果。

    ...

    else if((document.form1.exp_amount.value).length==0)
    {
        alert("Block Amount is left Blank!");
        return false;
    }

    else if (!checkName()) {
        return false;
    }

    else
    {
        document.form1.submit();
        return true;
    }

除此之外,您可以通过多种方式清理和改进代码。我现在不想进入它们,但如果您想讨论它,请发表评论。

答案 3 :(得分:0)

将checkName()函数编辑为

function checkName()
{
re = /^[A-Za-z]+$/;
if(re.test(document.exp_name.form1.value))
{
     alert('Valid Name.');
     return true;
}
else
{
    alert('Invalid Name.');
    return false;

}

}

并添加

else if(!checkName()){ return false;}

到表单提交之前的验证码