Подскажите в чём ошибка

TecT

Пользователь для ТесТа
Регистрация
25 Фев 2009
Сообщения
457
Реакции
45
Надо чтоб при выборе "Юридическое лицо" блокировалась кнопка "Да". Подскажите пожалуйста.

Код:
$('#person').change(function(){
var person = $('#person-1 input:checked').val();
if (person == '1') {
$('#inval-0').attr('disabled', 'disabled');
} else {
$('#inval-0').attr('disabled', false);
}
});

HTML:
<div class="sub" id="person">
<div><label class="title">Правовой статус страховщика:</label></div>
<input type="RADIO" id="person-0" name="person" value="0"><label for="person-0">Физическое лицо</label>
<input type="RADIO" id="person-1" name="person" value="1"><label for="person-1">Юридическое лицо</label>
</div>
<div class="sub">
<div><label class="title">Вы вышли на пенсию или имеете степени инвалидности?</label></div>
<input type="RADIO" id="inval-0" name="inval" value="1"><label for="inval-0">Да</label>
<input type="RADIO" id="inval-1" name="inval" value="2"><label for="inval-1">Нет</label>
</div>
 
Рабочий код:
Код:
$('#person input').change(function(){
var person = $('input#person-1:checked').val();
if (person == '1') {
$('#inval-0').attr('disabled', 'disabled');
} else {
$('#inval-0').attr('disabled', false);
}
});

2 ошибки:
1) $('#person') - указывает на div, у которого нет события change
2) Неправильно составлен селектор $('#person-1 input:checked').
После выполнения команды:
var person = $('input#person-1:checked').val();
у person может быть два значения:
1 или undefined
Можно заменить на
var person = typeof $('input#person-1:checked') == 'undefined' ? 0 : 1
 
  • Нравится
Реакции: TecT
Спасибо за разъяснение, но вот ещё такой момент.

Всё работает, но вот в чём проблема, если я нажимаю на юридическое лицо ничего не происходит, но если открыть исходный код то к input добавилось disabled. Но вот если прописываю вместо, attr() button() то всё нормально скрывается всё. Но загвостка в том что button() не принимает такой параметр как checked. Просто хотелось если один вариант скрыт то второй уже сразу активирован.

Как быть в таком случае?
 
у меня вот так работает без проблем:
PHP:
$('#person').change(function(){
if ($('.persone_radio:checked').val() == '1') {
$('#inval-0').attr('disabled', 'disabled');
$('#inval-1').attr('checked', 'checked');    
} else {
$('#inval-0').attr('disabled', false);
}
});​
 
 
<div class="sub" id="person">
<div><label class="title">Правовой статус страховщика:</label></div>
<input type="RADIO" id="person-0" class="persone_radio" name="person" value="0"><label for="person-0">Физическое лицо</label>
<input type="RADIO" id="person-1" class="persone_radio" name="person" value="1"><label for="person-1">Юридическое лицо</label>
</div>
<div class="sub">
<div><label class="title">Вы вышли на пенсию или имеете степени инвалидности?</label></div>
<input type="RADIO" id="inval-0" name="inval" value="1"><label for="inval-0">Да</label>
<input type="RADIO" id="inval-1" name="inval" value="2"><label for="inval-1">Нет</label>
</div>​
Посмотреть как работает можно здесь: Для просмотра ссылки Войди или Зарегистрируйся
 
  • Нравится
Реакции: TecT
Для просмотра ссылки Войди или Зарегистрируйся твой код тоже работает но вот у меня проблема такая же как я описал выше.

То есть если прописывать через attr() тогда изменения происходят только в исходном коде, а если через button() тогда всё происходит и в исходном коде и визуально тоже. Но проблема в том что у button() можно либо включить либо отключить кнопку, а мне надо чтоб ещё параллельно ставился чебокс.
 
А в каком браузере такая фигня происходит? и если можно ссылку на проблемную страницу выложите, так легче разобраться будет, возможно на ней есть ещё какие-то скрипты, перебивающие работу нужного скрипта...
 
А где на указанном сайте проблемная страница?
P.S. Нашел нечто подобное при расчете "Путешествий", вот только не увидел там кода обработки радиокнопки "Физ/Юр лицо"...
 
А где на указанном сайте проблемная страница?
P.S. Нашел нечто подобное при расчете "Путешествий", вот только не увидел там кода обработки радиокнопки "Физ/Юр лицо"...

Видимо ты зашёл на ту страницу когда я уже всё подправил и то, если взглянуть то при нажатии на Юр. лицо, отключается кнопка внизу "Да", но не ставится чекед на ответ "Нет".
 
ага вижу...
PHP:
$('#person').change(function(){
if ($('.persone_radio:checked').val() == '1') {
$('#inval-0').button('disable');
} else {
$('#inval-0').button('enable');
}
});
а должно быть:
PHP:
$('#person').change(function(){
if ($('.persone_radio:checked').val() == '1') {
$('#inval-0').attr('disabled', 'disabled');
$('#inval-1').attr('checked', 'checked');
} else {
$('#inval-0').attr('disabled', false);
}
});​
я же выше код такой приводил... причин не выполняться этому коду не вижу :( ...хотя вот это кусок может козлить:
PHP:
$('#vehicle_pre_type').find('input').attr('checked', false);
_block_person.find('input').attr('checked', false);
_block_location.find('#location option:first').selected(true);
_block_accident.find('option:first').selected(true);
 
Назад
Сверху