【问题标题】:Checkbox and onchange method usage复选框和 onchange 方法的使用
【发布时间】:2014-09-24 21:21:54
【问题描述】:

我有一个表,其中一些行在第一列上有复选框,如果用户单击,它会调用一些 javascript 方法来禁用相应行的其他字段。

这些输入的结构是这样的:

<input type="checkbox" name="ans_R2057321_Q2060122" id="ans_R2057321_Q2060122" value="2002241" onclick="matrix.disableFields(this, 'R2057321');recalculateRowFormulas('2057321'); alignTDs();" />

我实现了一个链接,当用户点击它时,它必须选择所有这些复选框,所以我这样做了:

function noQuoteAllRowsOfCurrPage(){
    jQuery("input:checkbox[id^=ans_R]").each(function(i,e) {
        jQuery(e).prop('checked', true);
    });
}

这只是在屏幕上的每个 id 以 ans_R 开头的复选框中进行迭代,然后检查 CB 状态是否为 true。它确实有效,但问题是在输入复选框的 onclick 属性上调用的 javascript 函数没有运行。我做的第一件事是从 onclick 更改为 onchange,这应该是正确的方法,因为复选框的状态正在改变,但不知何故它不起作用......有什么想法我能做什么?

【问题讨论】:

  • 请不要使用这样的内联事件处理——阅读和维护太糟糕了。

标签: javascript jquery html checkbox onchange


【解决方案1】:

JQuery 的.prop() 函数不会触发更改事件。你可以

1 - 手动触发事件

jQuery(e).prop('checked', true).trigger('change');

2 - 使用.click() 函数来检查输入并触发事件。

jQuery(e).click();

【讨论】:

  • @Periback 您是否考虑同时触发两者? jQuery(e).prop('checked', true).trigger('change').trigger('click');
  • 我将您的第二个想法与我的(这是您的第一个想法)结合起来,它按我的预期工作......(我发现有很多其他 javascript 代码正在影响我的......)
  • 我完全按照你说的做了(我在这里打开了页面,所以我没有收到你更新的评论)
  • 只有一件事..我必须在更改之前触发点击...由于某种原因,它无法按照您的建议在一行上使用...查看我的更新回答
【解决方案2】:

我找到了我所缺少的,因为我看到几个人有同样的问题,我认为我的解决方案可以对其他人有所帮助..

我刚刚为“更改”添加了一个触发器。

function noQuoteAllRowsOfCurrPage(){
    jQuery("input:checkbox[id^=ans_R]").each(function(i,e) {
        jQuery(e).click();
        jQuery(e).prop('checked', true).trigger('change');
    });
}

【讨论】:

  • 元素没有绑定更改事件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 2021-10-05
  • 2020-02-05
相关资源
最近更新 更多