JQuery onChange 使用变化前的值(需要变化后的值)

JQuery onChange uses values before change (values after change needed)

我正在开发一个模块,如果只有一个有效值和一个空值可用,它应该 select 是多离子场或单离子场的唯一可能值。

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

第一个 if 条件检查字段中是否只有一个可能的值。当我记录 'Change' 数组时,即使调用整个函数的 'change' 是禁用这些值的 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 = [];
        } )
    } )

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

我希望这对以后的其他人有所帮助。