返回true或false不能在JavaScript中工作

时间:2011-02-03 22:02:02

标签: javascript html forms return-value

我的返回值不起作用,我需要它们才能工作,所以我可以验证页面。我在函数中有一个函数,因为会编写更多代码,需要进行这种设置。

以下是JavaScript代码:

var postalconfig = /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/;

function outer(){
    function checkpostal(postal_code){
      if (postalconfig.test(document.myform.postal_code.value)) {
        alert("VALID SSN");
        return true;
      } else {
        alert("INVALID SSN");
        return false;
      }
    }
  checkpostal();
}

HTML:

<form name="myform" action="index.php" onSubmit="return outer();" method="post">
    Postal Code <input name="postal_code"  type="text" />
    <input name="Submit" type="submit"  value="Submit Form" >
</form>

4 个答案:

答案 0 :(得分:7)

checkpostal();更改为return checkpostal();

像这样:

var postalconfig = /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/;

function outer(){   

  function checkpostal(postal_code) {
    if (postalconfig.test(document.myform.postal_code.value)) {
      alert("VALID SSN");
      return true;
    } else {
      alert("INVALID SSN");
      return false;
    }
  }

  return checkpostal();

}

答案 1 :(得分:4)

这里的问题是您获得了outer的返回值,但outer没有返回任何内容。 return true(或false)仅影响当前函数,在本例中为checkpostal

您需要outer返回checkpostal的返回值:

function outer() {
    function checkpostal(postal_code) {
        if (postalconfig.test(document.myform.postal_code.value)) {
            alert("VALID SSN");
            return true;
        } else {
            alert("INVALID SSN");
            return false;
        }
    }

    return checkpostal();
}

答案 2 :(得分:3)

看起来outer()的结尾应该是

return checkpostal();

而不仅仅是

checkpostal();

checkpostal()的调用可能会正确返回,但是onsubmit将无法获得结果,因为outer()没有返回任何内容。

答案 3 :(得分:1)

您需要将电话号码退回到checkpostal:

function outer(){   

    function checkpostal(postal_code){
 if (postalconfig.test(document.myform.postal_code.value)) {
  alert("VALID SSN");
  return true;
 } else {
  alert("INVALID SSN");
  return false;
 }
}

return checkpostal();

}