2014-09-30 2 views
1

У меня есть следующая проблема: у меня есть select-box с, например. 3, группу радиокнопки и флажок.Взаимодействие между радио и выбором в jQuery

Я намерен проверить и отключить этот флажок, если выбрано третье значение в selectbox или установлена ​​определенная (вторая) радиокнопка.

Проблема заключается в том, что всякий раз, когда я выбираю другую радиообъектуру, флажок установлен, но не отключен, даже если выбрано поле выбора с третьим значением. Или, если я изменяю значение selectbox, флажок включен, даже если выбран определенный радиобъектив.

Как исправить эту проблему?

Спасибо заранее!

<select id="sel" > 
<option id="opt1" value="0"></option> 
<option id="opt1" value="1" >nope</option> 
<option id="opt2" value="2" >nope</option> 
<option id="opt2" value="3" >this</option> 
</select> 


<input type="radio" name="11" value="first" id="one"></input> 
<input type="radio" name="11" value="second" id="two" ></input> 
<input type="checkbox" name="22" value="third" id="third" ></input> 


$("input[name='11']").change(function(){ 
if($("#one").is(":checked")) { 
    $("#third").prop("checked",true).prop("disabled","disabled"); 
} else { 
    $("#third").attr("disabled", false); 
} 
}); 

$("#sel").change(function(){ 
var m = $("#sel").val(); 
if (m == "3") { 
    $("#third").attr("checked",true).attr("disabled","disabled"); 
} else {  
    $("#third").attr("disabled", false);} 
}); 

здесь ссылка:

http://jsfiddle.net/gcxbgdhc/2/

+1

IDs ** must ** быть уникальным. – j08691

ответ

0

Я рекомендовал бы сделать отдельную функцию, которая проверяет, чтобы флажок выбран и/или отключен или нет и вызова этой функции на событии изменения в радио-кнопки и выберите, например, так:

$("input[name='11']").change(function(){ 
    setCheckbox(); 
}); 

$("#sel").change(function(){ 
    setCheckbox(); 
}); 

var setCheckbox = function() { 
    if ($('#sel').val() === '3' || $('#two').is(':checked')) 
    { 
     $('#third').click().attr('disabled', 'disabled'); 
    } 
    else 
    { 
     $('#third').removeAttr('checked').removeAttr('disabled'); 
    } 
}; 

JSFiddle Demo

Редактировать:

Просто добавьте оператор if. Я должен, вероятно, указать, что если у вас есть какие-либо дополнительные спецификации, которые вам нужны, возможно, есть некоторые очень простые операторы if, которые исправят проблему.

Таким образом, в этом примере, изменить

$('#third').click().attr('disabled', 'disabled'); 

в

if (!$('#third').is(':checked')) 
    { 
     $('#third').click(); 
    } 
$('#third').attr('disabled', 'disabled'); 

И я обновил скрипку. Ура!

+0

Прежде всего, спасибо за идею с отдельной функцией. , Проблема здесь в том, что флажок должен быть проверен, даже если val() не является «3» или радиообъект (в вашем случае «плохой») не проверяется. В своем демоверсии, если я сначала поставлю флажок, а затем выберите val() === 3 или проверьте «плохой» радиокассетчик, он отключает флажок и отключает его. Надеюсь, вы поймете, что я имею в виду. – moody

+0

Легкое исправление. Я добавил раздел «Изменить» в сообщение. – bowheart

Смежные вопросы