我有一个简单的“如果为真”函数,需要从另外两个当前运行的函数中获取结果。我一直在搜寻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>
我清理了此问题的代码,因此可以轻松对其进行检查。我尝试使用全局变量,但是由于某些原因,我无法获取内部函数来查看外部变量。我试图检查命名错误以及可能的不正确放置,但是似乎找不到问题所在。有人可以协助我使此脚本正常工作吗?此时我迷路了。谢谢
只需创建命名函数-像这样:
$(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");
}
});
});
使用匿名函数没有魔术...您可以只使用命名函数。
仅供参考,我分享了此信息,而不是返回布尔值以字符串形式发送
并根据您的需要更改条件,并将这些字符串值传递给第三个
您想要的条件
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");
}