2014-09-24 49 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