在jQuery中仅执行一次操作

3

我正在使用jQuery UI,试图禁用数据组中的所有文本框,但仅在选项卡加载一次时执行。以下是我目前的代码:

$(function () {
        $("#tabs").tabs({
            cache: true,
            load: function (event, ui) {
                $(".data-group").one('load', function () {
                    $(this).find(':text').attr('disabled', 'disabled');
                });
            },
            select: function (event, ui) {
                // Do Stuff
            }
        });
    });

结果是我可以通过界面启用文本框,输入数据,但当我切换到其他选项卡然后再切换回来时,文本框中的值仍然存在(如果数据有错误则显示验证消息),但所有文本框都被禁用。
有解决此问题的建议吗?
2个回答

0
尝试绑定到“show”事件,类似于“如果至少一个文本输入框中有数据,则启用它们”,例如:
show: function(event, ui) {
    if($(".data-group").find(":text[value]").length) {
        $(".data-group").find(":text").removeAttr("disabled");
    }
}

这个确实可以工作,但是似乎每次切换选项卡都禁用一次会更有效率。这种做法可行吗?如果不行,我就采用你的方法。 - JasCav
实际上我意识到这样做不行,因为用户可能会输入一个值然后禁用复选框。再次感觉应该有更高效的答案。但还是非常感谢你的帮助。 - JasCav

0

我最终通过缓存选项卡来解决这个问题,以便它们只加载一次。然后,我启用相应的文本框。从那时起,用户的操作决定了其他框是启用还是禁用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接