0

VB.netアプリでは、通常のASPコントロールで作成されたいくつかのチェックボックスがあります。<asp:CheckBox ID="cb3" runat="server" Checked="true" />

「すべて選択/なし」機能を実装しようとしていますが、いくつか問題があります。Javascriptは、Internet Explorer(v9)のチェックボックスの状態を変更していません。IEの開発ツールを使用してデバッグを試みましたが、チェックボックスのcheckedプロパティが確実にに設定されていtrueます。(また、「チェック済み」に設定してみました。)JSは次のとおりです。

function setCheckboxes( state )
{
    var inputs = document.getElementsByTagName("input");
    for ( var i in inputs )
    {
        if ( inputs[i].type == "checkbox" )
        {
            // this line is definitely executed on the checkboxes
            inputs[i].checked = state;
            // this doesn't work either
            //inputs[i].checked = (state ? "checked" : "");
        }
    }
}

document.getElementById("cbSelectAll").onclick = function() {
    setCheckboxes(true);
    return false;
}

document.getElementById("cbSelectNone").onclick = function() {
    setCheckboxes(false);
    return false;
}

関連する可能性のある2番目の問題は、Firefox(v11)で発生します。上記のJSは正常に機能し、チェックボックスの選択を解除しますが、送信時に初期状態に設定されます。ただし、クリックによる選択と選択解除は通常どおり正常に機能します。これを修正するにはどうすればよいですか?

編集:明確にするために、これは基本的なHTMLだけでなく、特に.netの問題です。チェックボックスのある基本的なページを試しましたが、IEはそれらを適切に(選択解除)します。

更新2:関連する可能性があるため、より多くの情報を含める。いくつかチェックしたところ、チェックボックスをクリックしてもInternet Explorerの状態は変更されませんが、送信すると状態が保存されます。

Telerikグリッドビューを使用してデータをバインドしています。aspxコードは次のとおりです。

    <telerik:RadGrid ID="gridContacts" runat="server" Skin="Office2007" GridLines="None" AutoGenerateColumns="False">
        <MasterTableView>
            <RowIndicatorColumn>
                <HeaderStyle Width="20px" />
            </RowIndicatorColumn>
            <ExpandCollapseColumn>
                <HeaderStyle Width="20px" />
            </ExpandCollapseColumn>
            <Columns>
                <telerik:GridBoundColumn DataField="id" DataType="System.String" UniqueName="id" Visible="False">
                    </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="name" DataType="System.String" UniqueName="name" HeaderText="Name">
                    </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="email" DataType="System.String" UniqueName="email" Visible="False">
                    </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="sms" DataType="System.String" UniqueName="sms" Visible="False">
                    </telerik:GridBoundColumn>
                <telerik:GridTemplateColumn DataField="useemail" DataType="System.Boolean" UniqueName="useemail" HeaderText="Email"> 
                    <ItemTemplate> 
                        <asp:CheckBox ID="cbEmail" runat="server" Checked='<%# Eval("useemail") %>' /> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn> 
                <telerik:GridTemplateColumn DataField="usesms" DataType="System.Boolean" UniqueName="usesms" HeaderText="SMS"> 
                    <ItemTemplate> 
                        <asp:CheckBox ID="cbSMS" runat="server" Checked='<%# Eval("usesms") %>' /> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn>
            </Columns>
        </MasterTableView>
        <FilterMenu EnableTheming="True" Skin="Office2007">
            <CollapseAnimation Duration="200" Type="OutQuint" />
        </FilterMenu>
    </telerik:RadGrid>

チェックボックスごとに、出力されるHTMLは次のとおりです。

<input name="ctl00$ContentPlaceHolder1$gridContacts$ctl00$ctl04$cbEmail"
class="Office2007 input" id="ctl00_ContentPlaceHolder1_gridContacts_ctl00_ctl04_cbEmail"
type="checkbox" CHECKED="checked" /><label class="Office2007 radfdCheckboxChecked"
for="ctl00_ContentPlaceHolder1_gridContacts_ctl00_ctl04_cbEmail" unselectable="on">&nbsp;</label>
4

3 に答える 3

0

不満、

これが役立つと思います:setCheckboxes関数で。理由はわかりませんが、チェックボックスの動作が異なるようです...まあ、他のすべて。

function setCheckboxes( state )
{
    var inputs = document.getElementsByTagName("input");
    for ( var i in inputs )
    {
        if ( inputs[i].type == "checkbox" )
        {
            if (state == "true"){
                inputs[i].disabled=false;
                inputs[i].parentElement.disabled = false;
            } else {
                inputs[i].disabled=true;
                inputs[i].parentElement.disabled = true;
            }               
        }
    }
}

それが役立つことを願っています!

-sf

于 2012-05-01T19:40:25.200 に答える
0

この質問/回答をチェックしてみてください:

HTMLで「すべて選択」チェックボックスを実装するには?

彼らが実装した for ループの構文は、試してみるとわずかに異なります。また、私がお勧めする jQuery でこれを行う方法の素晴らしい例がいくつかあります。

于 2012-05-01T15:58:30.710 に答える
-2

checked 属性の値は、true/false ではなく「checked」にする必要があります。Firefox は true/false 値を処理できますが、IE はそれを好まないようです。

ドキュメントを確認してください: http://www.w3schools.com/tags/att_input_checked.asp

于 2012-05-01T15:53:14.253 に答える