2013-03-13 5 views
0

У меня есть группа asp: checkbox. Большинство из них имеют класс «ограниченный», и все они имеют clientIdMode = «static». У меня есть отдельный флажок с id = 'other'. При щелчке этого окна я хочу, чтобы ящики с классом = 'limited' были отключены. Проблема в том, что я не могу заставить ее работать в Firefox или Chrome. Я нашел кучу связанных вопросов в сети, но никаких реальных ответов..prop, .attr не работает при попытке отключить asp: CheckBox

$('#other').click(function() { 
    if ($(this).is(":checked")) { 
     $(".restricted").prop("disabled", "disabled"); 
    } 
    else { 
     $(".restricted").prop("disabled", false); 
    } 
}); 

Я попытался с помощью комбинации .prop, .attr, («отключено», правда), и («отключено», «отключено»), но я не могу заставить его работать за пределами IE.

EDIT: Вот некоторые HTML, а также:

<fieldset> 
    <legend>Accessories</legend> 
    <ol> 
     <li> 
      <asp:CheckBox ID="cb1" runat="server" ClientIDMode="Static" CssClass="restricted" /> 
      <label for="cb1">VAL 1</label> 
     </li> 
     <li> 
      <asp:CheckBox ID="cbP2" runat="server" ClientIDMode="Static" CssClass="restricted" /> 
      <label for="cb2">VAL 2</label> 
     </li> 
     <li> 
      <asp:CheckBox ID="cb3" runat="server" ClientIDMode="Static" CssClass="restricted" /> 
      <label for="cbPickupInside">VAL 3</label> 
     </li> 
     <li> 
      <asp:CheckBox ID="cb4" runat="server" ClientIDMode="Static" CssClass="restricted" /> 
      <label for="cb4">Value 4</label> 
     </li> 
    </ol> 
</fieldset> 

И флажок, что при нажатии следует отключить другой:

<fieldset> 
<ol> 
    <li> 
     <asp:CheckBox ID="cbG" runat="server" ClientIDMode="Static" /> 
     <label for="cbG">VAL G</label> 
    </li> 

+1

Если вы используете asp: checkbox, то есть не id, asp преобразует идентификатор в эту массивную строку. Вместо этого я бы использовал класс. – PlantTheIdea

+0

@LifeInTheGrey Обычно «ct100» или что-то подобное добавляется в качестве префикса. Но это довольно ненадежно, имо. – Johan

+0

ха-ха ненадежный действительно, я видел, как он делает сумасшедшие сумасшедшие вещи. либо сделайте его текстовым полем html и дайте ему 'runat =" server ", чтобы он работал с ASP, или сделал его классом. – PlantTheIdea

ответ

2
$('#other').click(function() { 
     if ($(this).is(":checked")) { 
      $(".restricted input").prop("disabled", "disabled"); 
     } 
     else { 
      $(".restricted input").prop("disabled", false); 
     } 
    }); 

Я установил ее, добавив входной селектор после выбора класса. Пролет вокруг ввода - это то, что на самом деле имело класс, поэтому я предполагаю, что IE находит диапазон и запускает код против ввода. Chrome и Firefox должны останавливаться на промежутке.

-1

Если это жерех флажок, цель например:

$("#<%=other.ClientID %>").click(function() { 
    //code here 
}); 

Измените класс флажок из

CssClass="restricted" 

Для

class="restricted" 
+0

Спасибо, но это ничего не исправить. Все еще работает в IE, но не в Chrome/Firefox. – BearSkyview

+0

Можете ли вы попробовать удалить clientidmode = static и попробовать выбрать, как указано выше? – tymeJV

+0

Просто попробовал. Нет разницы. – BearSkyview