两个回报似乎不起作用

时间:2014-04-03 19:23:26

标签: javascript html html5 forms function

我有html在表单后运行javascript,

form name="mortgage" method="post" action=" "onsubmit="return completeFormValidation();">

用于验证的javascript代码,

mainFunction:

function completeFormValidation() {

return yearentry1();

return my_location();


} // End of completeFormValidation

主要的第一个功能:

function yearentry1(){

     var yearval = document.mortgage.mortYear.value;
     alert(yearval);

}

主要的第二个功能:

function my_location(){

  var numradio = document.mortgage.propLocation.length;
  var selected="";

  for(var i=0; i < numradio; i++){

    if(document.mortgage.propLocation[i].checked == true){
        selected += "Selected radio item " + i;

    }
  }

  if(selected == ""){

    document.getElementById("reserved").innerHTML = "<p> none radio selected </P>";
    return false;

  }

}

返回两次似乎不起作用!当第一个函数通过并返回TRUE时 函数退出并发送表单。

是否可以在main函数中运行所有函数,然后如果main中的任何函数返回false,则返回false?

4 个答案:

答案 0 :(得分:2)

&#34;返回&#34;语句结束了该功能,因此您无法在此之后调用任何内容。

错:

function completeFormValidation() {
    return my_yearentry();
    return my_location();
}

正确:

function completeFormValidation() {
    return my_yearentry() && my_location();
}

但是你的my_yearentry函数必须有一个布尔返回值。

答案 1 :(得分:0)

这不会起作用,因为你的其他任何一个功能都没有准备好,但理想情况下你会想做类似的事情:

function completeFormValidation() {
    return my_yearentry() && my_location();
}

麻烦的是其他函数都不会总是返回一些有用的东西。

如果他们两人总是返回(理想情况下返回truefalse),那么这将有效。

也许

function yearentry1(){
    var yearval = document.mortgage.mortYear.value;
    return yearval;
}

function my_location(){
    if(selected == ""){
        document.getElementById("reserved").innerHTML = "<p> none radio selected </P>";
        return false;
    }
    return true;
}

虽然将验证检查和验证报告混合在一起可能也会出现问题。这可能是一个好的开始。

答案 2 :(得分:0)

一旦函数返回,该函数调用就完成了。

function completeFormValidation() {

    my_yearentry(); // take away return statement, just call the function
                    // you have inconsistent function name below :"yearentry1()"

    return my_location();
}

答案 3 :(得分:0)

据推测,如果两个函数都返回false,您只想提交表单。在这种情况下,您需要以下内容:

function completeFormValidation() {

    return my_yearentry() && my_location();    
}

http://jsfiddle.net/LgepA/1/

&&是&#34;和&#34;。

在这种情况下,如果第一个函数返回false,则第二个函数甚至会被执行。如果您希望第二个始终执行,则只需使用&

function completeFormValidation(){

    return !!(my_yearentry() & my_location());   
}

http://jsfiddle.net/LgepA/3/

或者以更易读的方式:

function completeFormValidation(){

    var yearResult = my_yearentry();
    var locationResult = my_location();

    return yearResult && locationResult;   
}

http://jsfiddle.net/LgepA/4/