我有一个使用的类型列表和一个复选框 当 Select Change the Value时,我调用一个AJAX来加载值状态并更改复选框

$('input[name=status]').on('change', function() {
    $.ajax({
        // Do ajax call update
        success: function (data) {
            // show alert
        }
    })
});
$('select').on('change', function() {
    $.ajax({
        // Do ajax call load value
        success: function (data) {
            // load the data current status to the checkbox
            // $('input[name=status]').attr('checked', data.checked); This not work after click checkbox for change
            $('input[name=status]').prop('checked', data.checked); // This call event onChange and show the alert
        }
    })
});

问题是

  • 当我使用attr更新更改后的复选框值时,如果我选中了更新当前 Select 类型的状态的复选框.如果我再更改 Select ,则复选框不能更改.
  • 我使用属性替换属性它现在起作用了,但新的问题是它将调用CheckBox Change事件,这使alert 显示每个更改的 Select 值.

如果使用复选框props 更改,如何防止事件更改?

推荐答案

据我所知,没有这样的行动.
也许你可以设置一个标志,比如添加一个类,如果让这个类停止更改的话.
示例:

$('input[name=status]').on('change', function() {
    if ($(this).hasClass('disable-ajax')) { // The ajax action can't be call if this has this class
        return;
    }
    $.ajax({});
});
$('select').on('change', function() {
    let inputElem = $('input[name=status]');
    $.ajax({
        success: function (data) {
            inputElem.addClass('disable-ajax'); // Add class for prevent the ajax in input onchange event
            inputElem.prop('checked', data.checked);
        }
    });
    inputElem.removeClass('disable-ajax');
});

Html相关问答推荐

一次悬停可触发同一分区中的另一次悬停

Vue.js复选框对齐问题:在表格单元格中居中复选框

选中/取消选中带有_hyperscript的多个复选框

为什么在添加文本时网格区域会调整大小?

我怎样才能有一个div,在其中放置一个消息,打破和不go 的div?

如何影响flex项目中的flex-gap收缩顺序和文本换行顺序?

你将如何为手机制作导航栏

默认情况下使用Disbale Scroll,但在单击图标后将其激活

浮动Div在CSS中未按预期工作

如何使用*ngFor将模板从父级传递到子级

网格中的图像zoom 不正确

带有数据 URI 的音频在 Chrome 中失败

为什么即使我点击其他地方,我的 contenteditable="true" 也会被激活?

为什么盒子不在div中显示?

如何使容器的大小适合其 position:absolute; 子元素的大小

如何配置 prettier 使其以 Vue.js 模板语法的特定方式运行?

如何在滚动行中显示一张图片和下一张图片的一半?

在不扭曲图像的情况下将图像放入灵活的 Div 框内

如何使用 css 将图像变成黑色并使文本出现在悬停时?

左右图像,响应页面大小并居中