2013-03-25 9 views
0

У меня панель активирована/деактивирована с помощью флажка (chk1) 'On/Off'. Эта панель содержит флажок (chk2) и переключатель (rbtn). Когда переключатель радиосвязи (rbtn) установлен, флажок должен быть отключен. Когда панель отключена, сняв флажок «Вкл./Выкл.», Переключатель и флажок (chk2) отключены. Проблема заключается в том, что когда я открываю страницу с включенной панелью, выполняется код из javascript, но когда я открываю страницу с отключенной панелью, после того, как я включил панель, javascript не работает, когда я проверяю переключатель, чтобы chk2 стал отключенным.Код Javascript не работает

$(document).ready(function(){ 
    $('input[id^=rbtn]').click(function() { 
     SetControlEnableState($('#chk2'), $('#rbtn')); 
    }); 
    function SetControlEnableState(controlToSet, control) { 
     if (control.is(':checked')) { 
      $(controlToSet).attr('disabled', 'disabled'); 
      alert('if'); 
     } 
     else { 
      $(controlToSet).removeAttr('disabled'); 
      alert('else'); 
     } 
    } 
}); 

Когда панель обновлена, код javascript больше не доступен.

+0

Вы используете jQuery. Вы импортировали файлы jQuery – PSR

+0

Что именно не работает? Получаете ли вы ошибку или не работает ваш код, как ожидалось? –

+0

Ошибка не появляется, но я помещал предупреждающие сообщения в функцию SetControlEnableState, и сообщение не показывалось. – Ale

ответ

0
$(document).ready(function(){ 

      $('input[id^=rbtn]').change(function() { 
       SetControlEnableState(); 
      }); 
    function SetControlEnableState() { 
     if ($('#rbtn').is(':checked')) { 
      $('#chk2').attr('disabled', 'disabled'); 
      alert('if'); 
     } 
     else { 
      $('#chk2').removeAttr('disabled'); 
      alert('else'); 
     } 
    } 
3

Не используйте click событие на флажках но change одно:

$('input[id^=rbtn]').change(function() { 

Таким образом, вы получите новое состояние. Событие click генерируется до.

1

Вместо этого:

$(controlToSet).attr('disabled', 'disabled'); 

$(controlToSet).removeAttr('disabled'); 

ли это:

$(controlToSet).prop('disabled', true); 

$(controlToSet).prop('disabled', false); 
0

Упростить все это:

$(document).ready(function() { 
    $('input[id^=rbtn]').change(function() { 
     SetControlEnableState($('#chk2'), $('#rbtn')); 
    }); 

    function SetControlEnableState(controlToSet, control) { 
     controlToSet.prop('disabled', control.is(':checked')); 
    } 
}); 
0

попробовать этот

$(document).ready(function(){ 
    $('input[id^=rbtn]').click(function() { 
     SetControlEnableState($('#chk2'), $(this)); 
    }); 
    function SetControlEnableState(controlToSet, control) { 
     if (control.is(':checked')) { 
      $(controlToSet).attr('disabled', 'disabled'); 
     } else { 
      $(controlToSet).removeAttr('disabled'); 
     } 
    } 
}); 
Смежные вопросы