Как я могу получить результат «если верно» из двух других функций и использовать его в третьей функции? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть простая функция «если верно», где мне нужно получить результат от двух других в настоящее время работающих функций. Я искал SO и inte rnet, чтобы найти ничего, что на самом деле работает. Я сделал две начальные функции. Первый проверяет дату, а второй проверяет время. Я хочу, чтобы этот третий скрипт проверил, не привели ли другие две функции к истине, и если да, что-то сделайте. Сценарий выглядит следующим образом:

$(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>

Я очистил код для этого вопроса, чтобы его можно было легко проверить. Я пытался использовать глобальные переменные, но по какой-то причине я не могу получить внутреннюю функцию для просмотра внешних переменных. Я пытался проверить на наличие ошибок в именовании и, возможно, неправильное размещение, но я не могу найти проблему. Кто-нибудь может помочь мне заставить этот скрипт работать? Я потерян в этой точке. Спасибо

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Просто для справки, я делюсь этим вместо возвращаемых логических значений, отправляю его в виде строки

и изменяю условия в соответствии с вашими потребностями и передаю эти строковые значения в третье

условие, которое вы хотите

// Обновлен код в соответствии с функцией изменения, если вы хотите выполнить условие на основе длины, тогда вы можете получить значение длины до условия if без необходимости усложнять его внутри условия if

Попробуйте третье условие, например функцию. Чтобы избежать нежелательной путаницы, убедитесь, что каждое поле является обязательным

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

    if(dateA == dateB){
      alert("Apple");
      valid_apple ="true";
    }else{
      valid_apple ="false";
    }
  });

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

    if(timeA!='' && timeB!=''){
    if(timeA >= timeB){
      alert("Banana");
      valid_banana = "true";
      third_fun();
    } else {
      valid_banana = "false";
      third_fun();
    }
  }
});


  function third_fun(){
    if(valid_apple == "true" && valid_banana == "true"){
      //when its true
      alert("Hello");
    }else{
      //when its false
      alert("Goodbye");
    }
  }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<form>
  <fieldset>
    <ul>
      <li>
        <p><input type="text" id="startdate" placeholder="startdate"></p>
      </li>

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

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

      <li>
        <p><input type="text" id="endtime" placeholder="endtime"></p>
      </li>
    </ul>
  </fieldset>
</form>
1 голос
/ 19 февраля 2020

просто создайте именованные функции - вот так:

$(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");
    }
  });
});

Нет волхвов c при использовании анонимных функций ... вы можете просто использовать именованные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...