2013-09-06 2 views
1

У меня есть эта странная проблема, возможно, я что-то пропускаю, но это делает меня сумасшедшим. В моем приложении я не хочу, чтобы пользователь выбирал более 30 элементов, поэтому после 30, если пользователь нажимает на дополнительный переключатель, я не хочу, чтобы он это делал.jQuery change Radio Button value..weird one

Проблема заключается в том, если я получить имя кнопки радио с помощью JQuery, а затем установите значение этой кнопки радио, он не работает, но если я жёстко то же имя, то он работает

Вот Jsfiddle пример. http://jsfiddle.net/s7GeZ/2/

HTML:

<span class="radiobut4" > 
    Ignore <input type="radio" value="ignore" name="art_52643" id="52643" > 
    Visible <input type="radio" value="visible" name="art_52643" id="52643" > 
    Invisible <input type="radio" value="invisible" name="art_52643" id="52643"> 
</span> 

Java Script:

$('input:radio').live("change",function (event){ 
var radioName = $(this).attr("name"); 
    alert(radioName); 
    $("input:radio[name='+radioName+'][value ='ignore']").prop('checked', true); 
    // $("input:radio[name='art_52643'][value ='ignore']").prop('checked', true); 

});

Просто прокомментируйте/раскомментируйте последние две строки, чтобы увидеть проблему.

Любая помощь будет оценена по достоинству.

+0

Хотя это не связано с проблемой, вы используете недопустимые идентификаторы - они не должны начинаться с числа или повторяться в одном документе. –

ответ

9

Несогласованные котировки, изменение:

$("input:radio[name='+radioName+'][value ='ignore']").prop('checked', true); 

к

$("input:radio[name='"+radioName+"'][value ='ignore']").prop('checked', true); 

Объединяем переменную в селекторе.
Также обратите внимание, что радиостанции с таким же именем представляют собой группу, и только один может быть проверен одновременно, радиостанции с одинаковым идентификатором - это просто недопустимая разметка.

+0

Отлично, спасибо человеку. – Zai

+0

Отлично, спасибо большое –

1

Вам необходимо указать название радиостанции, вы выбираете радио с именем «+ radioName +», которое не то, что вы хотите. Попробуйте следующее:

$("input:radio[name='"+radioName+"'][value ='ignore']").prop('checked', true); 
+0

Отлично, спасибо человеку. Не могу отметить как ответы, но и большое спасибо. – Zai