2012-05-01 17 views
0

VB.netアプリケーションでは、通常のASPコントロールで作成された複数のチェックボックスがあります。すなわち、<asp:CheckBox ID="cb3" runat="server" Checked="true" />JavascriptでASPチェックボックスの状態を設定する方法は?

「すべてを選択」機能を実装しようとしていますが、いくつか問題があります。 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; 
} 

Firefox(v11)で発生する2番目の問題です。上記のJSはうまく動作し、チェックボックスの選択を解除しますが、送信時には初期状態に設定されます。クリックして選択と選択を解除すると正常に機能します。これをどうやって解決するのですか?

編集:明確にするには、これは特に.netの問題です。基本的なHTMLだけではありません。私はチェックボックスと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> 
+0

私はVS2008でプロジェクトをセットアップしました。この問題はありません。ターゲットバージョンは何ですか?これらのチェックボックスのチェックには何らかの出来事がありますか? – Snuffleupagus

+0

@ user1090190私は実際にVS2005(バージョン8.0.50727.867)と.NETバージョン2.0.50727 SP2を使用しています。私の知る限り、チェックボックスのイベントはありません。 – DisgruntledGoat

+0

私はまだ複製できないようです。もっと多くのページを投稿できますか、それとも機密情報ですか?ここには何か他のものがあります。 – Snuffleupagus

答えて

-2

checked属性の値がtrue/falseではなくよりも、 "確認" する必要があります。 Firefoxは真偽値を扱うことができますが、IEはそれを気に入らないようです。

は、マニュアルを参照してください:http://www.w3schools.com/tags/att_input_checked.asp

+0

これが当てはまる場合、「checked」/ falseではなくtrue/falseを返すのはなぜですか? http://jsfiddle.net/tdFcb/ – Snuffleupagus

+1

(a)私はすでにそれを試みたので、(a)質問を読んでいないと、(b)w3schools、インターネット上の最悪のサイト。 – DisgruntledGoat

+0

w3schoolsはしばしば正確な「ドキュメント」ではありません。 –

0

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

How to implement "select all" check box in HTML?

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

+0

その構文はここでは適用されません。チェックボックス状態を別のチェックボックスと同じ状態に設定しようとしていません。 – DisgruntledGoat

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

関連する問題