0

こんにちは、私はjqueryを始めていますが、別のチェックボックスをクリックしてページ内のすべてのチェックボックスを選択しようとすると問題が発生します。

これは私のJqueryコードです:

$('.selecionarTodos').live('click', function () {

        alert("test");

        var checkbox = $(this).children('td').children('[type="checkbox"]');

        $('.headerChkItem').each(function () {

            if (checkbox.is(':checked')) {
                $(this).css('background-color', '');
                checkbox.attr('checked', false);
                $(this).children('td').children('[id*="hfSelecionada"]').val('false');
                qtdTotal = qtdTotal - parseFloat($(this).children('.quantidade').text().replace(',', '.'));
            }
            else {
                $(this).css('background-color', '#e8f783');
                checkbox.attr('checked', true);
                $(this).children('td').children('[id*="hfSelecionada"]').val('true');
                qtdTotal = qtdTotal + parseFloat($(this).children('.quantidade').text().replace(',', '.'));
            }

        });
    });

これは私のクライアント側のコードです:

<asp:TemplateField HeaderText="Selecionar" ItemStyle-HorizontalAlign="Center">
  <HeaderTemplate>
   <input type="checkbox" id="headerChkItem" cssclass="selecionarTodos" runat="server" />
     </HeaderTemplate>
       <ItemTemplate>
   <input type="checkbox" id="chkItem" disabled="disabled" cssclass="selecionado" runat="server" />
       </ItemTemplate>
 </asp:TemplateField>

PS .: テスト時に Jquery の「アラート」が実行されていません。前もって感謝します。

4

2 に答える 2

0

あなたのサーバーコード(あなたの例から)は次のようになると思います:

<asp:ObjectDataSource runat="server" ID="DataSource" SelectMethod="GetData" TypeName="WebApplication1.Test"></asp:ObjectDataSource>
<asp:GridView runat="server" ID="Grid" DataSourceID="DataSource">
    <Columns>
        <asp:TemplateField HeaderText="Selecionar" ItemStyle-HorizontalAlign="Center">
            <HeaderTemplate>
                <input type="checkbox" class="selecionarTodos headerChkItem" runat="server" />
            </HeaderTemplate>
            <ItemTemplate>
                <input type="checkbox" disabled="disabled" class="selecionado chkItem" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>            
    </Columns>
</asp:GridView>

このグリッドには、次のようなものが必要です。

$('.selecionarTodos').on('click', function () {
        var gridCheckboxes = $(this).parents('table').find('input:checkbox.chkItem');
        var qtdTotal = 0;

        if ($(this).is(':checked')) {
            $(this).css('background-color', '');
            gridCheckboxes.attr('checked', true);
            qtdTotal = qtdTotal - parseFloat($(this).children('.quantidade').text().replace(',', '.'));
        } else {
            $(this).css('background-color', '#e8f783');
            gridCheckboxes.attr('checked', false);
            qtdTotal = qtdTotal + parseFloat($(this).children('.quantidade').text().replace(',', '.'));
        }
    });

エラーのほとんどは次のとおりです。

  • クラスが正しい場合に cssclass 属性を使用する
  • テーブル内のチェックボックスの選択が間違っています

すべてのヘッダー チェックボックスに for each ループを使用する理由がまだわかりません。私が投稿したコードはヘッダーのチェックボックスにあるだけで、それをクリックすると、ヘッダーのチェックボックスの状態に基づいて、グリッド内の他のすべてのチェックボックスがチェックまたはチェック解除されます。

于 2013-04-22T15:38:20.383 に答える
0

id="headerChkItem"からに変更する必要があります。class="headerChkItem" また"cssclass"、サーバー側言語の一部ですか? それともそうあるべき"class"ですか?

于 2013-04-22T14:56:37.447 に答える