2013-06-09 4 views
0

Я наслаждался этим сайтом в прошлом году или около того и с нетерпением жду какой-либо помощи от вас всех.Включить или отключить один флажок, если установлен еще один флажок.

Я работаю над классической страницей asp (унаследовал страницу, не создавал ее), которая имеет таблицу, заполненную набором записей. Каждая запись из набора записей генерирует новую строку в таблице на основе любых критериев, которые выбраны. Для объяснения и простоты, если выбрать 1 магазин или 1000 магазинов, таблица будет генерировать много строк. Если предположить, что две записи, выбранные, таблица будет выглядеть следующим образом:

<table> 
    <tr class="row"> 
    <td>Store 1</td> 
    <td><input type=checkbox value="" name="chkFoo<%=rsR2.AbsolutePosition%>"/>Foo</td> 
    <td><input type=checkbox value="" name="chkBar<%=rsR2.AbsolutePosition%>" class="Bar"/>Bar</td> 
    <td><input type=checkbox value="" name="chkDo<%=rsR2.AbsolutePosition%>"/>Do</td> 
    <td><input type=checkbox value="" name="chkRe<%=rsR2.AbsolutePosition%>" class="Re"/>Re</td> 
    <td><input type=checkbox value="" name="chkMe<%=rsR2.AbsolutePosition%>"/>Me</td> 
    </tr> 
    <tr class="row"> 
    <td>Store 2</td> 
    <td><input type=checkbox value="" name="chkFoo<%=rsR2.AbsolutePosition%>"/>Foo</td> 
    <td><input type=checkbox value="" name="chkBar<%=rsR2.AbsolutePosition%>" class="Bar"/>Bar</td> 
    <td><input type=checkbox value="" name="chkDo<%=rsR2.AbsolutePosition%>"/>Do</td> 
    <td><input type=checkbox value="" name="chkRe<%=rsR2.AbsolutePosition%>" class="Re"/>Re</td> 
    <td><input type=checkbox value="" name="chkMe<%=rsR2.AbsolutePosition%>"/>Me</td> 
    </tr> 
</table> 

Каждый объект получает свое собственное имя, основанное на позиции записи. Я практически новичок в javascript и jquery (пытаясь узнать его в прошлом году или около того), но я хочу это сделать: если кто-то нажмет на кнопку «« Re », я хочу отключить и проверить флажок «« Бар »на том же ряду. По существу, если Проверено,, Бар должен быть проверен перед подачей этой формы.

Я пробовал следующий код jquery, но я борюсь с ним.

$('.Re').live('click', function() { 
    var n = $(this).siblings('Bar'); 
    if ($(this).attr('checked')) { 
    n.prop('disabled', true); 
    } else { 
     n.prop('disabled', false); 
    } 
}); 

Я также пробовал следовать этой ссылке (среди прочего) безрезультатно. http://bit.ly/15NPhdN. Какие-либо предложения? Любая помощь будет принята с благодарностью. Заранее спасибо!

ответ

0

Я предполагаю, что-то вроде этого следует сделать это:

$(function() { 
    $('table').on('change', '.Re', function() { 
     console.log(this.checked) 
     $(this).closest('td').siblings('td').find('.Bar').prop('checked', this.checked); 
    }); 
}); 

FIDDLE

примечание:

  • ваши флажков are'nt братьев и сестер, так как они вложены в ТД
  • , что событие изменения более подходит для флажков
  • , что делегированы версия on() будет лучше, так как live() осуждается
  • checked свойство, что устанавливает/сбрасывает проверенное состояние, а не disabled?
+0

Это имеет смысл; однако я попробовал это безрезультатно. Может, я что-то упустил? http://jsbin.com/ikuyoc/4/edit –

+0

Извините, я только что заметил ваш код Fiddle. Я буду вводить это в свой код и держать вас в курсе. Я думаю, это должно сделать это. –

+0

Попробуйте заменить 'table' на' document', поскольку я просто использовал 'table', но если это так же динамично, вам нужен элемент выше в DOM, который не является динамическим. – adeneo

0
$(function(){ 
$('.Re').on('change', function() { 
    var n = $(this).siblings('Bar'); 
    if ($(this).attr('checked')) { 
    n.prop('disabled', true); 
    } else { 
     n.prop('disabled', false); 
    } 
}); 
}); 
Смежные вопросы