2014-09-24 26 views
0

我有一个表的第一列上有复选框的地方,如果用户点击,它会调用一些JavaScript方法,禁用各行的其他字段。复选框和onchange方法的使用

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

<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,这应该是正确的方式来做到这一点,因为复选框的状态正在改变,但不知何故它不工作......任何想法我该怎么做?

+1

请不要使用像这样的内联事件处理 - 阅读和维护是非常糟糕的。 – 2014-09-24 21:24:11

回答

1

我发现我失踪了,因为我看到几个人同样的问题,我觉得我的解决方案可以为别人有用的..

我只是说了“变革”的触发器。

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

有没有改变事件绑定到元素 – 2014-09-24 21:24:36

1

JQuery的.prop()函数不会触发change事件。你要么可以

1 - 触发事件手动

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

2 - 使用.click()功能,将检查输入,并触发事件以及..

jQuery(e).click(); 
+1

@Periback你有没有考虑触发两者? ('click');' – LcSalazar 2014-09-25 13:40:33

+0

我把你的第二个想法和我的(这是你的第一个想法)结合起来,并且它的工作原理如下:'jQuery(e).prop('checked',true).trigger('change'我期待...(我发现有很多其他JavaScript代码正在影响我的..) – Periback 2014-09-25 14:00:55

+0

我刚刚做了你刚刚说的(我打开了页面,因此我没有得到你的更新评论) – Periback 2014-09-25 14:01:49