JQuery onChange使用更改前的值(需要更改后的值)

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

我正在开发用于OTRS的模块,如果只有一个有效值而有一个空值,则应该选择“多选”或“单选”字段的唯一可能值。

到目前为止,它可以正常工作,直到我使用ACL禁用选择值为止。例如,我得到一个带有3个可能值的选择字段。然后我禁用其中两个(ACL-如果选择了特殊队列),因此只剩下一个值(+一个空值)。我的模块最初不会选择最后一个值,但是当我在同一页面上更改其他任何内容(第二次onchange调用)时,它将选择最后一个可能的值。

第一个if条件检查该字段中是否只有一个可能的值。当我记录“更改”数组时,即使调用整个功能的“更改”是ACL禁用了这些值,它总是始终在其中存在已分解的值。

我对javascript还是有点陌生​​,还没有找到解决方案。

我将非常感谢您的帮助。

$('.TableLike').on("change", function () {
        var Change = [];
        $('.Row').each( function() {
            $(this).children().next().children().next().children().each( function(index) {
                Change[index] = $(this).text()
            } )
            if ( (!Change[2] || /.*Field needed.*/i.test(Change[2])) && Change[0] === "-") {
                SoleOption = Change[1];
                $(this).children().next().children().next().children().each(function() {
                    if ($(this).text() === "-") {
                        $(this).removeAttr("selected");
                    }
                    if ($(this).text() === SoleOption) {
                        $(this).attr("selected", "selected");
                    }
                } )
                $(this).children().next().children().children().children().val(SoleOption)

            }
            SoleOption = "";
            Change = [];
        } )
    } )
javascript jquery html acl otrs
1个回答
0
投票

我设法通过setTimeout()方法解决了该问题。因此,DOM在ACL进行更改之前已更新。我在onChange方法之后打开了setTimeout方法,并将更改后应该运行的所有代码都插入了setTimeout方法。

希望以后对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.