2009-08-04 2 views
0

У меня возникла проблема со следующим кодом. Ниже мой JavascriptПроблема с выбором радиокнопки с помощью JQuery

<script type="text/javascript"><!-- 
function toggleTB(val, targetTB) { 
    var b = 'disabled'; 
    if (val == '1') b = ''; 
    $('#' + targetTB).attr('disabled', b); 
} 

мой HTML -

<input id="obp17" name="obp17" onclick="toggleTB('0', 'obp4a');" type="checkbox"/>Corner 
<input id="obp4a" name="obp4a" type="radio" value="17" />Facing Down 
<input id="obp4a" name="obp4a" type="radio" value="18" />Facing Up 

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

Заранее спасибо

ответ

0

Вы хотите дать вашим элементам уникальный идентификатор. Затем, чтобы упростить выбор jQuery, также дайте им класс, например class = "corner_radio".

Тогда ваш код JQuery превращается в:

function toggleTB(val, targetTB) { 
    var b = 'disabled'; 
    if (val == '1') b = ''; 
    $('.corner_radio').attr('disabled', b); 
} 
0

Вы хотите задать различные идентификаторы для каждого входа вы хотите отключить, а затем установить атрибуты этих IdS' соответственно.

+0

Я не могу этого сделать. Код генерируется классом ASP.Net MVC Html.RadioButton и присваивает одно и то же имя всем кнопкам в той же группе. –

+0

Можете ли вы назначить стиль, а затем использовать jQuery для выбора стиля? – Jon

+0

Всегда лучше делать очевидное. Должно быть, дефицит кофеина с моей стороны не думал об этом Спасибо !!!! –

0

Вы должны использовать уникальные идентификаторы для радио или ненарушения вообще, или проще говоря, дать им класс, например:

<input id="obp4a" name="obp4a" class="radio" type="radio" value="17" />Facing Down 
<input id="obp4b" name="obp4a" class="radio" type="radio" value="18" />Facing Up 

В ваших JS:

$('.radio').attr('disabled', true); 
0

Вы хотели бы ненавязчиво добавить обработчик щелчка с помощью JQuery вместо и вы можете использовать JQuery-х attr("checked") найти проверяется ли флажок или нет. Что-то больше, как это:

var toggleTB = function(el, radioName) { 
    $("input:radio[name=" + radioName + "]").attr("disabled", $(el).attr("checked")); 
} 
$(function() { 
    $("#obp17").click(function(e) { toggleTB(e.target, "obp4a"); }); 
}); 

Я также вымыл HTML немного, добавил некоторые ярлыки (так что вы можете нажать на слово, связанный с элементом формы) и удалены недопустимые биты:

<label><input id="obp17" name="obp17" type="checkbox" />Corner</label> 
<label><input name="obp4a" type="radio" value="17" />Facing Down</label> 
<label><input name="obp4a" type="radio" value="18" />Facing Up</label> 
0

Вы можете использовать true/false для переменной b.

var b = true; //false 
Смежные вопросы