0

複数のチェックボックスを備えたテーブルを含むjQueryダイアログボックスがあります。

$("#custom-modal").dialog({
            height: 200,
            modal: true,
            buttons: { "OK": function () {
                var table1 = $("#MainContent_rtc1_customTable").html();
                alert(table1);
                //$.session('mytbl', $("#customTable").val());
                $.ajax({
                    type: "POST",
                    url: "MyPage.aspx/BindCustom",
                    data: ({ param1: table1 }),
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(errorThrown);
                    },
                    success: function (result) {
                        alert("success");
                    }
                });

                $(this).dialog("close");
                return true;
            }, "Cancel": function () {
                $(this).dialog("close");
                return false;
            }
            }

        });
    });

    $(':checkbox').click(function () {
        var $this = $(this);
        if ($this.is(':checked')) {
            //alert(event.target.id);
            $this.attr('checked', false);
        } else {
            //alert(event.target.id);
            $this.attr('checked', true);
        }
    });

チェックボックスの状態を変更した後、alert(table1);でテーブルのhtmlコードが表示されたとき。(OKボタンを押した後); すべてのチェックボックスの状態がチェックされているのがわかります。だから彼らは変わらないのです。

4

3 に答える 3

0
$('input[type=checkbox]').click(function () {
        var $this = $(this);
        if (this.checked) {
            //alert(event.target.id);
            $this.prop('checked', false);
        } else {
            //alert(event.target.id);
            $this.prop('checked', true);
        }
});
于 2012-10-04T13:35:14.523 に答える
0

$(this).removeAttr('checked');代わりに使用してみてください$this.attr('checked', false);

于 2012-10-04T14:03:01.927 に答える
0

それらがASPチェックボックスである場合、実際のチェックボックス入力はコントロールではありません。それに加えて、イベントを適切にバインドしていないように見えます。wireyで述べたように、チェックされたプロパティを変更しようとしているだけの場合は必要ありません。

それでもチェックボックスにイベントハンドラーを追加する必要がある場合は、この投稿を参照してください。

すべてのチェックボックスを選択し、それぞれに特定のイベントハンドラーを動的に追加する必要があります

この問題はバグとして報告されましたが、デカールが無効で修正されていません(http://bugs.jquery.com/ticket/7594)。

クリックイベントを正しく処理してから、チェックできるカスタム変数を設定することもできます。aspでは、チェックボックスは単なる入力ではなく、スパンがパッケージ化されており、すべてのクラスと属性は通常、ボックスではなくスパンに追加されるため、これをチェックするのは困難です。

したがって、ニーズに応じて、次のことができます。

var table1;

$('.isCheckBox').each(function(){
    //default value set here
    $(this).attr('isChecked','false');
});

$('input:checkbox').click(function (event) {
    if($(this).prop('checked') == true)
    {
       $(this).attr('data-isChecked','true'); 
    }
    else
    {
        $(this).attr('data-isChecked','false'); 
    }

    table1 = $('#thetable').html();
    alert(table1);
});

次のHTMLを使用:

<table id="thetable">
<tr>
    <td><input class='isCheckBox' type="checkbox"/></td>
    <td><input class='isCheckBox' type="checkbox"/></td>
    <td><input class='isCheckBox' type="checkbox"/></td>
</tr>

フィドル: http: //jsfiddle.net/DwerK/9/

次に、属性「data-isChecked」を確認します。HTMLが検証されるように、データプレフィックスを追加する必要があります。

ここで、親要素に属性を追加してから、コードビハインドでチェックインできると推測します。これがどの程度正確に機能するかわからず、チェックするインスタンスがありません。

それがお役に立てば幸いです。

編集:Wireyは問題を確認するように依頼しました。これは問題を示していると私は理解しています: http: //jsfiddle.net/w22Q4/2/

于 2012-10-17T20:42:44.140 に答える