我如何从其他两个函数获得“如果为真”结果并将其用于第三个函数?

问题描述 投票:0回答:2

我有一个简单的“如果为真”函数,需要从另外两个当前运行的函数中获取结果。我一直在搜寻SO和互联网,以至于找不到任何有效的方法。我做了两个初始功能。第一个检查日期,第二个检查时间。我希望第三个脚本检查其他两个函数是否为true,如果是,则执行某些操作。脚本如下:

$(function() {
  // attempted global variables but this did not work
  //var dateA = $('#startdate').val();
  //var dateB = $('#enddate').val();    
  //var timeA = $('#starttime').val();
  //var timeB = $('#endtime').val();        

  //This function appears to work
  $("#startdate, #enddate").on("change.apple", function() {
    var dateA = $('#startdate').val();
    var dateB = $('#enddate').val();


    if (((dateA).length && (dateB).length) && (dateA == dateB)) {
      alert("Apple");
      return true;
    } else {
      return false;
    }
  });

  //This function appears to work
  $("#starttime, #endtime").on("change.banana", function() {
    var timeA = $('#starttime').val();
    var timeB = $('#endtime').val();


    if (((timeA).length && (timeB).length) && (timeA >= timeB)) {
      alert("Banana");
      return true;
    } else {
      return false;
    }
  });



  //This function does NOT work
  $("#startdate, #enddate, #starttime, #endtime").change(function() {
    if (apple() && banana()) {
      // when its true
      alert("Hello");
    } else {
      // when its false
      alert("Goodbye");
    }
  });
});
<form>
  <fieldset>
    <ul>
      <li>
        <p><input type="text" id="startdate"></p>
      </li>

      <li>
        <p><input type="text" id="starttime" </p>
      </li>

      <li>
        <p><input type="text" id="enddate" </p>
      </li>

      <li>
        <p><input type="text" id="endtime"></p>
      </li>
    </ul>
  </fieldset>
</form>

我清理了此问题的代码,因此可以轻松对其进行检查。我尝试使用全局变量,但是由于某些原因,我无法获取内部函数来查看外部变量。我试图检查命名错误以及可能的不正确放置,但是似乎找不到问题所在。有人可以协助我使此脚本正常工作吗?此时我迷路了。谢谢

javascript jquery
2个回答
1
投票

只需创建命名函数-像这样:

$(function() {
  // attempted global variables but this did not work
  //var dateA = $('#startdate').val();
  //var dateB = $('#enddate').val();    
  //var timeA = $('#starttime').val();
  //var timeB = $('#endtime').val();        

 function apple() {
    var dateA = $('#startdate').val();
    var dateB = $('#enddate').val();


    if (((dateA).length && (dateB).length) && (dateA == dateB)) {
      alert("Apple");
      return true;
    } else {
      return false;
    }
  }

  //This function appears to work
  $("#startdate, #enddate").on("change.apple", apple);

  function banana() {
    var timeA = $('#starttime').val();
    var timeB = $('#endtime').val();


    if (((timeA).length && (timeB).length) && (timeA >= timeB)) {
      alert("Banana");
      return true;
    } else {
      return false;
    }
  }


  //This function appears to work
  $("#starttime, #endtime").on("change.banana", banana );

  //This function does NOT work
  $("#startdate, #enddate, #starttime, #endtime").change(function() {
    if (apple() && banana()) {
      // when its true
      alert("Hello");
    } else {
      // when its false
      alert("Goodbye");
    }
  });
});

使用匿名函数没有魔术...您可以只使用命名函数。


0
投票

仅供参考,我分享了此信息,而不是返回布尔值以字符串形式发送

并根据您的需要更改条件,并将这些字符串值传递给第三个

您想要的条件

    var valid_apple;
    var valid_banana;

    if((1<2) && (2>1)){
      alert("Apple");         
      valid_apple ="true";
      }else{
      valid_apple = "false";
    }
   
    if((1<2) && (2>1)){
      alert("Banana");            
      valid_banana = "true";
    }else{
      valid_banana = "false";
    }
           
    if (valid_apple == "true" && valid_banana == "true") {
      alert("Hello");
    }else{
      alert("Goodbye");
    }  
© www.soinside.com 2019 - 2024. All rights reserved.