2010-04-24 2 views
1

У меня была следующая проверка в моем jQuery, который, как я думал, работает нормально, чтобы проверить, был ли установлен переключатель.странное поведение при проверке, если переключатель в jQuery

if ($("input[@name='companyType']:checked").attr('id') == "primary") { 
    ... 
} 

Вот в радиокнопки:

<p> 
     <label>Company Type:</label> 
     <label for="primary"><input onclick="javascript: $('#sec').hide('slow');$('#primary_company').find('option:first').attr('selected','selected');" type="radio" name="companyType" id="primary" checked />Primary</label> 
     <label for="secondary"><input onclick="javascript: $('#sec').show('slow');" type="radio" name="companyType" id="secondary" />Subsidiary</label>    
    </p> 

Затем он внезапно перестал работать (или я так думал). Я сделал некоторую отладку и, наконец, понял, что он возвращает идентификатор «approved_status». В другом месте моей формы у меня есть флажок под названием «approved_status». Я понял, что, когда я изначально тестировал это, я должен был проверить его на записях, где approved_status является ложным. И теперь большинство моих утвержденных_данных истинны/проверены.

Я изменил код так:

var id = $("input:radio[@name='companyType']:checked").attr('id'); 
alert(id); 
if (id == "primary") { 

И теперь правильно возвращаются «первичный» или «вторичный» в качестве идентификатора.

Итак, он работает, но кажется, что он не проверяет имя вообще и теперь просто проверяет радиокнопки. Я просто хочу знать для будущего использования, что не так с исходным кодом b/c. Возможно, у меня есть 2 разных радиоприемника на странице, а затем мое новое исправление, вероятно, не сработает. Благодаря!

ответ

2

Попробуйте это:

var id = $("input[name='companyType']:checked").attr('id'); 
alert(id); 
if (id == "primary") { 
+0

Это сделал трюк. Благодаря! Что представляет собой @? Я видел этот код в нескольких местах в Интернете, используя @ – RememberME

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