我在一个模块上工作,如果只有一个有效值和一个空的值可用,它应该选择多个或单个选择字段中唯一可能的值。
到目前为止,它工作得很好,直到我使用ACL禁用选择值。例如,我得到了一个包含3个可能值的选择字段。然后我禁用了其中的两个(ACL -如果选择了一个特殊的队列),所以只剩下一个值(+一个空值)。我的模块一开始不会选择最后一个值,但当我在同一页上更改任何其他值时(第二个onchange调用),它将选择最后一个可能的值。
第一个if条件检查Field中是否只有一个可能的值。当我记录'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 = [];
} )
} )
发布于 2020-02-13 18:24:38
我设法用setTimeout()方法解决了这个问题。所以DOM在ACL进行更改之前进行了更新。我在onChange方法之后打开了setTimeout方法,并将所有应该在更改后运行的代码插入到setTimeout方法中。
我希望这将在未来对其他人有所帮助。
https://stackoverflow.com/questions/60190139
复制相似问题