0

チェックボックスを作成したいのですが、チェックボックスがチェックされると、ボタン btnAccept は css クラスを変更して d になります

私のコードは Firefox では問題なく動作しますが、Google Chrome では動作しません。私は一日中グーグルで検索しようとしていますが、まだ解決策を見つけることができません。誰か私の間違いを知っていますか? 私のコードは以下の通りです: これは Jquery コードです:

function checkboxclick() {
    $("input[id*='TermAcceptCheckBox']").each(function () {
        if (this.checked) {
            $("#<%=btnAccept.ClientID%>").addClass("blue-button19");
            $("#<%=btnAccept.ClientID%>").attr("disabled", false);
        }
        else {
            $("#<%=btnAccept.ClientID%>").removeClass("blue-button19");
            $("#<%=btnAccept.ClientID%>").attr("disabled", true);
        }
    });
}

これはhtmlコードです: <asp:CheckBox ID="TermAcceptCheckBox" runat="server" visible="True" OnChange="javascript:checkboxclick();"/>

4

4 に答える 4

0

重要: 変更にはぼかしが必要なため、CHANGE ではなく CLICK を使用してください。

チェックボックスは 1 つしかないと思いますので、それぞれは必要ありません。
また、attr の代わりに prop を使用し、呼び出しをチェーンするので、jQuery がはるかにシンプルになります。

デモ

<asp:CheckBox id="TermAcceptCheckBox" runat="server" visible="True" />

jQuery:

$(function() {
  $("#<%=TermAcceptCheckBox.ClientID%>").on("click", function() {
    var button = $("#<%=btnAccept.ClientID%>");
    var chk = $(this).is(":checked");
    button.prop("disabled", !chk).toggleClass("blue-button19",chk);
  });
})

ユーザーがページをリロードした場合に備えて、テストを関数に入れ、それを onload と呼ぶこともお勧めです。

デモ

function acceptCheck(checkbox,button) {
    var chk = checkbox.is(":checked");
    button.prop("disabled", !chk).toggleClass("blue-button19",chk);    
}
$(function() {
  $("#TermAcceptCheckBox").on("click", function() {
    acceptCheck($(this), $("#btnAccept"));
  });
  acceptCheck($("#TermAcceptCheckBox"), $("#btnAccept"));
})
于 2013-04-26T07:24:36.890 に答える
0

これを試して :-

if (this.checked) {
            $("#<%=btnAccept.ClientID%>").addClass("blue-button19");
            $("#<%=btnAccept.ClientID%>").removeAttr("disabled");
        }
        else {
            $("#<%=btnAccept.ClientID%>").removeClass("blue-button19");
            $("#<%=btnAccept.ClientID%>").attr("disabled", "disabled");
        }
于 2013-04-26T07:11:50.617 に答える
0

私は jQuery でそのようにします:

$("input[id*='TermAcceptCheckBox']").each(function () {
    $btnToDisable = $("#<%=btnAccept.ClientID%>");

    if ($(this).is(':checked'))
        $btnToDisable.removeAttr("disabled");
    else
        $btnToDisable.attr("disabled", "disabled");

    $btnToDisable.toggleClass("blue-button19");

});

私ははるかに簡単な例を行いました:

HTML

<input type="checkbox" id="myCheckbox" />

<button id="btn" disabled="disabled">My Button</button>

JQuery

$('#myCheckbox').on('click', function() {
    $btnToDisable = $("#btn");

    if ($(this).is(':checked'))
        $btnToDisable.removeAttr("disabled");
    else
        $btnToDisable.attr("disabled", "disabled");

    $btnToDisable.toggleClass("blue-button19");

});

ここで動作することを確認してください。

したがって、問題の原因は次のとおりです。

<asp:CheckBox ID="TermAcceptCheckBox" runat="server" visible="True" OnChange="javascript:checkboxclick();"/>

変更: OnChange_OnClick

<asp:CheckBox ID="TermAcceptCheckBox" runat="server" visible="True" OnClick="javascript:checkboxclick();"/>
于 2013-04-26T07:14:35.987 に答える
0

ボタンを無効にして有効にするには、次のコードを試してください。

$("button[name='set-up-account']").removeAttr("disabled");

("button[name='set-up-account']").attr("disabled", "disabled");

コードによれば、次のようになります。

function checkboxclick() {
$("input[id*='TermAcceptCheckBox']").each(function () {
    if (this.checked) {
        $("#<%=btnAccept.ClientID%>").addClass("blue-button19");
        $("#<%=btnAccept.ClientID%>").removeAttr("disabled");
    }
    else {
        $("#<%=btnAccept.ClientID%>").removeClass("blue-button19");
        $("#<%=btnAccept.ClientID%>").attr("disabled", "disabled");
    }
});

}

これを試して、問題が解決することを願ってください

于 2013-04-26T07:14:44.583 に答える