【问题标题】:JQuery onChange uses values before change (values after change needed)JQuery onChange 使用更改前的值(需要更改后的值)
【发布时间】:2020-02-12 14:04:18
【问题描述】:

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

到目前为止,它工作正常,直到我使用 ACL 禁用选择值。 例如,我有一个包含 3 个可能值的选择字段。然后我禁用其中的 2 个(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 = [];
        } )
    } )

【问题讨论】:

  • 简而言之,您的解决方案将有 2 个事件侦听器和两个变量在它们之上 - 第一个触发 onFocus 或 onClick 并存储 previousValue,另一个变量处理程序对将在onChange 上为您提供新值
  • 感谢您的回答!但它似乎仍然无法识别 ACL 对字段所做的更改。在我像以前一样对任何输入字段进行第二次更改后,它确实可以识别它。

标签: javascript jquery html acl


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 2019-06-01
    • 2019-08-01
    • 2015-10-13
    • 2011-08-08
    • 2012-08-05
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多