2011-02-04 51 views
0

昨天有一些很好的帮助,并有后续问题/问题。关于HTML表单,当用户点击onSubmit =“return outer()”时,函数'outer'只返回里面两个函数之一(checkname或checkpostal)。我如何得到它来检查两个功能? Noob问题我确定,但我想了解,而不是仅从表格中复制粘贴。javascript返回值第2部分

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

function outer() { 
    function checkname(f_name) { 
     if (document.myform.f_name.value == "") { 
      alert("Enter your First Name"); 
      return false; 
     } else { 
      alert("valid First Name"); 
      return true; 
     } 
    } 
    return checkname(); 

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

的HTML:

<form name="myform" action="index.php" onSubmit="return outer();" method="post"> 
    First Name 
    <input name="f_name" type="text" /> 
    <br /> 
    Telephone 
    <input name="telephone" type="text" /> 
    <br /> 
    <input name="Submit" type="submit" value="Submit Form" > 
</form> 
+0

您应该通过单击旁边的最有用的一个空心检查接受的答案。 – SLaks 2011-02-04 16:05:47

回答

3

功能外执行()停止时,您的收益。

试试这个单一return语句:

return checkname() && checkpostal(); 
+0

太棒了 - 完美的工作。只是好奇,如果你的表单有大量的元素呢?你会不会补充说明? Ex返回checkfirstname()&&检查姓氏()&& checkpostal()等..? – 2011-02-04 15:42:31

+0

是的。但是,接下来会出现用户体验用户问题,而这个用户问题在很多年前就已经存在了,而且往往会经常被提出来:你的脚本只会说“某些字段无效,猜测哪些字段在测试失败时”。有了很多字段,在打字时分别验证每个字段的输入会是一个更好的想法。 – BiAiB 2011-02-07 11:02:35

2

当你写return checkname();,你的功能立即停止。
没有办法返回一个值,然后运行该函数的其余部分。

相反,您需要调用两个内部函数,然后使用逻辑运算符将它们合并为一个布尔值。
例如:

return checkname() && checkpostal(); 
0

只是做一些事情,而不是或返回或在年底做。

return checkName()& & checkPostal();

0

你在做什么在技术上是有效的,但我可能会建议你单独定义函数。使用外干脆打电话给他们,并检查他们的价值观,所以你必须:

function outer(){ 
    return (checkname() && checkpostal()); 
} 

function checkname(){ 
    // Code for checkname 
} 

function checkpostal(){ 
    // Code for checkpostal 
}