2013-09-18 3 views
1

Я пытаюсь написать функцию javascript, которая отменяет все остальные параметры, когда установлен первый флажок «Все». Этот список имеет индекс 0 в cbxlOption и значение -1, как показано ниже. Как получить значение флажка i, чтобы я мог заполнить javascript ниже? Большое спасибо за вашу помощь!JavaScript: Get Checkbox Value

<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/

я добавлять яваскрипт функцию к каждому флажку, как это:

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

любезно поделиться HTML генерируемый в браузере в jsfiddle поэтому мы можем обеспечить решение. – najam

+0

Надеюсь, что эта помощь. Спасибо. http://jsbin.com/utuvuy/20/ – CYC0616

ответ

0

Поскольку вы заинтересованы только в случае " Все ", чтобы снять отметку со всех остальных, вам нужно только применить свою функцию к этому конкретному флажку. Вы можете сделать это в JS, не встраивая его в свой HTML. Кроме того, для флажка вы хотите onchange вместо onclick.

Дайте этому попытку:

JSBin

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; 
    } 
} 
+0

Спасибо. Эта помощь! – CYC0616

0

Учитывая ваш HTML, добавить класс к вашим флажкам (я использовал класс cb) (не отображится все один Тха). В обработчике изменения инлайн передать 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/

+0

Спасибо! Посмотрите в демо. – CYC0616