2011-07-25 151 views
0

我有一個複選框和文本輸入列的表。複選框列中的最後一行有一個「全部檢查」鏈接。複選框點擊不同步-Jquery

在檢查所有點擊:

1:文本必須改變「全部取消」

2:檢查框上方列,並設置文本框的文本= 500

在「全部取消「: 1:文本必須改變‘全選’ 2:取消選中的複選框並清除文本框。

但2點以上不能正常工作。

步驟:

1:單擊「全部選中」 - 爲「全部取消」和複選框被選中文本的變化,但它並沒有將文本框設置爲500。

2:單擊「全部取消」 - 文本更改爲「全選」和箱未被選中,但現在它設置文本框500

我認爲這是一些事件處理的問題,但我還沒有計算出來爲止。

任何想法發生了什麼?

注意:我將不得不使用「onclick」,因爲我的實際代碼是.aspx頁面,無法識別onchange複選框。

更新代碼Sample

回答

1

函數的onClick()和setValue方法()點擊()之前運行應用的支票上的複選框; 因此在第1步中,它看不到複選框被選中。

+0

是的,我設置了警報和種類的理解,但我現在如何解決它。 – gbs

+0

以下是正確的方法和解決方案。 http://jsbin.com/inocud/20/edit(我儘可能少地編輯以便理解..代碼可以進一步優化)。即使沒有人爲您的代碼提供修復,您也應該注意正確的答案。 – Jason

+0

沒有完全看過你的代碼,但有一些副作用。如果我沒有在CheckAll中設置.attr(「checked」,「checked」),點擊它將把所有的檢查設置爲未選中並且未選中以進行檢查。所以不得不保持這一點。 – gbs

0

嘗試射門。

更新(它是一種技巧,但作品):http://jsfiddle.net/2YGYt/

另一種方法(非哈克的方式):http://jsfiddle.net/2YGYt/3/

+0

不,我不能在那裏設置它。有很多行。它必須從setValue中設置,因爲onclick是從asp.net中的代碼隱藏作爲屬性添加的。所以對於列中的每個複選框,值500將會不同。 – gbs

+0

然後,只需切換你'click'和'.attr'的順序 - 在這裏看到:http://jsbin.com/inocud/13/edit – Mrchief

+0

我已經嘗試過,但沒有運氣。並檢查我的更新樣本,以更好地瞭解我的情況。 – gbs

0

試試這個

<script> 
$(function() { 
      $(".checkall").click(function() { 


       if ($(this).text() == "Check All") { 
        $(this).text("Uncheck All"); 
        $(this).parent().parent().prevUntil('tbody').each(function() { 
         $(this).find("td input:checkbox").attr('checked', 'checked').click(); 
        }); 
       } 
       else { 
        $(this).text("Check All"); 
        $(this).parent().parent().prevUntil('tbody').each(function() { 
         $(this).find("td input:checkbox").removeAttr('checked').click(); 
        }); 
       } 
      }); 
     }); 
     function setValue(chb, txtid, valu) { 
      if ($(chb).is(":checked")) { 
       $("#" + txtid).val(valu); 
      } 
      else { 
       $("#" + txtid).val(""); 
      } 
     } 

</script> 
+0

問題在於您在調用click方法後設置了checked屬性。 – ShankarSangoli

+0

我試過了你的建議,但它也不起作用。它只是反轉複選框和文本框的行爲。 – gbs

1

改變 '檢查' 是布爾值並且很好。

更新http://jsbin.com/inocud/16

類的方法 - http://jsbin.com/inocud/22

+0

不行,不行。另請參閱我的帖子。我更新了代碼示例。 – gbs

+0

Geez。很不合邏輯,但是將checkbox複選到!chb.checked,它似乎從一開始就起作用。 http://jsbin.com/inocud/16和似乎像檢查屬性是額外的,因爲它被檢查無論如何,所以也許它在一些點得到雙向 –

+0

啊......謝謝。爲什麼這對你有用?我嘗試了這一切!chb.checked邏輯,但行爲的原始方式。我會玩一下,如果我沒有看到其他副作用,我會關閉它。 – gbs