1

最初のチェックボックス「すべて」が選択されているときに、他のすべてのオプションのチェックを外すJavaScript関数を作成しようとしています。以下に示すように、この listitem の cbxlOption のインデックスは 0 で、値は -1 です。以下のJavaScriptを完成させるために、選択したチェックボックスの値を取得するにはどうすればよいですか? 助けてくれてどうもありがとう!

<asp:CheckboxList ID="cbxlOptions" runat="server" >
    <asp:ListItem Text="All" Value="-1" />
    <asp:ListItem Text="Option 1" Value="0" />
    <asp:ListItem Text="Option 2" Value="1" />
    <asp:ListItem Text="Option 3" Value="2" />
</asp:CheckboxList>



function UncheckOptions( cbxListID, cbxID )
{
  var checkedValue = null; 
  var cbxListID = document.getElementById( cbxListID );
  var cbxArray = cbxListID.getElementsByTagName( 'input' );

  checkedValue = document.getElementById( cbxID ).value;

          //--uncheck everything else other than the first checkbox(index=0)
  if (checkedValue < 0)  
  {
    for (var i=1; cbxArray[i]; ++1)
    {
        cbxArray[i].checked = false;
    } 
  }
  else                     //--checkedvalue > 0, uncheck "ALL" 
  {
  cbxArray[0].checked = false;

  }

}

これは正確なコードではありません (私は asp.net でコーディングしているため) が、これが役立つことを願っています。 http://jsbin.com/utuvuy/20/

次のように、各チェックボックスにJavaScript関数を追加しています。

For Each item As ListItem In cbxlOptions.Items
            item.Attributes.Add("onclick", "UncheckOptions('" & _
                             cbxlStatus.ClientID.ToString & "',this.id);")
Next
4

2 に答える 2

0

HTML を指定して、チェックボックスにクラスを追加します (私は class を使用しcbました) (Check All のものではありません)。インライン変更ハンドラーでthis、引数として関数に渡し、次の JS を使用します。

function doAll(obj) {
    var cb = document.getElementsByClassName("cb");

    for (var i = 0; i < cb.length; i++) {
        cb[i].checked = obj.checked;
    }
}

HTML

<input type="checkbox" id="cbx0" value="-1" onclick="doAll(this)">All

デモ: http://jsfiddle.net/tymeJV/FAbZG/

于 2013-09-18T18:24:56.633 に答える
0

「すべて」をクリックして他のすべてのチェックを外す場合にのみ関心があるため、その特定のチェックボックスに関数を適用するだけで済みます。これは、HTML に埋め込まずに JS で行うことができます。また、チェックボックスの場合は、onchange代わりにonclick.

これを試してください:

JSビン

var all = document.getElementById('cbx0');
all.onchange = function() {
    if(this.checked) {
        UncheckOptions(cbx0);
    }
};

function UncheckOptions(id)
{
    var cbxListID = document.getElementById(id);
    var cbxArray = document.getElementsByTagName( 'input' );

  //--uncheck everything else other than the first checkbox(index=0)
    for(var i=1; i < cbxArray.length; i++) {
        cbxArray[i].checked = false;
    }
}
于 2013-09-18T18:32:28.667 に答える