You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取两个校验函数的True结果并在第三个函数中使用?代码调试求助

问题分析与修复方案

我来帮你搞定这个问题!核心问题在于你之前的apple和banana并不是独立可调用的函数——它们只是绑定在特定事件上的处理程序而已,直接在第三个函数里调用apple()和banana()根本找不到对应的函数,而且事件处理函数的返回值也不会被外部捕获,这就是第三个函数失效的原因。

下面是具体的修复方案,我会把校验逻辑抽成独立的可复用函数,让代码既清晰又能实现你想要的功能:

修复后的完整代码

JavaScript 部分

$(function() {
    // 独立的日期校验函数,返回布尔值表示校验结果
    function validateDates() {
        var dateA = $('#startdate').val();
        var dateB = $('#enddate').val();
        const isValid = dateA.length && dateB.length && dateA === dateB;
        if (isValid) {
            alert("Apple");
        }
        return isValid;
    }

    // 独立的时间校验函数,返回布尔值表示校验结果
    function validateTimes() {
        var timeA = $('#starttime').val();
        var timeB = $('#endtime').val();
        const isValid = timeA.length && timeB.length && timeA >= timeB;
        if (isValid) {
            alert("Banana");
        }
        return isValid;
    }

    // 日期输入变化时触发校验
    $("#startdate, #enddate").on("change.apple", validateDates);

    // 时间输入变化时触发校验
    $("#starttime, #endtime").on("change.banana", validateTimes);

    // 所有输入变化时判断两个校验是否都通过
    $("#startdate, #enddate, #starttime, #endtime").change(function() {
        if (validateDates() && validateTimes()) {
            alert("Hello");
        } else {
            alert("Goodbye");
        }
    });
});

HTML 部分(修复了标签闭合问题)

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

关键改动说明

  • 抽离独立校验函数:把日期和时间的校验逻辑分别放到validateDates()和validateTimes()里,这两个函数直接返回校验结果的布尔值,方便在任何场景下调用。
  • 简化事件绑定:原来的事件处理程序直接绑定到这些独立函数上,避免重复编写相同逻辑。
  • 修复HTML标签问题:你原来的#starttime和#enddate输入标签没有闭合(缺少>),这可能导致浏览器解析异常,已经帮你修复。
  • 全局判断逻辑:第三个监听函数现在直接调用两个校验函数,通过它们的返回值判断是否满足条件,这样就能正常触发对应的提示了。

这样修改后,你的「条件为真时执行操作」的功能就能正常工作啦!

内容的提问来源于stack exchange,提问作者kejo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:49:05