2012-10-05 46 views
0

我有一個奇怪的問題。我正在爲Magento開發一些東西。我添加了鏈接「選擇所有類別」,並添加一個jQuery事件來檢查所有複選框,當我點擊它。它工作的很好,但不知何故,HTML沒有更新,Magento無法看到所有輸入都被選中。但是當我手動點擊一個複選框時,它會更新html(我正在查看控制檯)並且Magento保存按鈕工作得很好。複選框的狀態看起來已更新,但實際上並未更新

如何解決此問題?我不知道我還應該做什麼來執行更新HTML。它看起來像它的工作(複選框被選中),但請看看控制檯和HTML。 Html必須更新。

我創建的jsfiddle:here

+0

能否請您發表您的HTML和jQuery代碼? –

+0

@LaurentBrieu ..他們做到了。 – Daedalus

+1

我已經創建了小提琴 – bla0009

回答

1

只需選中所有複選框,像this

您的is(':checked') IF聲明似乎是錯誤的,因爲它應該被包含在.each()上,所以它適用於所有複選框,請嘗試在我鏈接的小提琴上更簡單的方法。

+0

那把小提琴不會永遠在那裏;如果我是你,我會在這裏發佈你的代碼給其他人在未來尋求這個答案。 – Daedalus

+0

它仍然不會更新html。所以,它不會工作正常。 – bla0009

+0

有時它不會顯示在控制檯中。試試吧 – Jashwant

1

你試過prop('checked', true);而不是prop('checked', 'checked');? 這就是我在所有例子中看到的。

+0

是的,我做過。仍然是同樣的問題。 – bla0009

1

我想通了。這是Magento的問題。 Magento不使用這種形式,它使用隱藏的輸入並收集選定的複選框。無論如何,都會得到所有答案。由於

1

您可以使用類似:

// custom jQuery added 
jQuery(function() { 
    var to_check = false;  
    jQuery(".select-all-categories").click(function(){ 
     if (!to_check) 
      to_check = true; 
     else 
      to_check = false; 

     jQuery("#banner-categories input[type=checkbox]").each(function(){ 
      if (!to_check)  
       jQuery(this).removeAttr("checked"); 
      else 
       jQuery(this).attr("checked","checked"); 
     });   
     return false; 
    }); 
}); 

代碼可以被優化

2

試試這個:

.attr('checked', 'checked'); 
相關問題