2015-05-28 4 views
0

Я новичок в jQuery и надеюсь, что кто-то здесь может мне помочь.jQuery: show/hide Div, когда выбрана первая или вторая радиокнопка

Я пытаюсь показать/скрыть DIV ('requestDetails') если первый или второй из переменной диапазона радиокнопок выбирается (причина этого заключается в том, что я хотел бы избежать Аппаратно кодирование конкретных значений для проверки).

До сих пор у меня было только жестко закодированное решение, но это не работает должным образом, и я не уверен, как обращаться только к первому и второму переключателю без этого.

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

Мой JQuery:

$('[name=requestType]').on('change', function(){ 
    if(($('[name=requestType]').val() == 'value1') || ($('[name=requestType]').val() == 'value2')){ 
     $('#requestDetails').show(); 
    }else{ 
     $('#requestDetails').hide(); 
    } 
}); 

Мой HTML:

<input type="radio" name="requestType" value="value1" />Value1 
<input type="radio" name="requestType" value="value2" />Value2 
<input type="radio" name="requestType" value="value3" />Value3 
// ... 
<div id="requestDetails" class="hidden"> ... </div> 

Большое спасибо заранее за любую помощь, Майк

+1

У вас есть элемент с идентификатором «#requestDetails» на странице, правильно? – adamjld

+0

@adamjld: да, конечно - это просто простой div с этим идентификатором, поэтому я не опубликовал его здесь. -

keewee279

+2

Это хорошая идея опубликовать все соответствующие коды, чтобы люди не могли задавать глупые вопросы :) – adamjld

ответ

1

Если бы я тебя, я бы идентифицировать кнопки вы хотели бы использовать в качестве триггеров для этого шоу/скрыть событие с новым классом. Затем присоедините событие к этому классу кнопки. Это не добавляет большого количества накладных расходов кода.

Пример:

<input type="radio" class="special" name="requestType" value="value1" />Value1 
<input type="radio" class="special" name="requestType" value="value2" />Value2 
<input type="radio" name="requestType" value="value3" />Value3 


$('.special').on('change', function(){ 
    if(($('[name=requestType]').val() == 'value1') || ($('[name=requestType]').val() == 'value2')){ 
     $('#requestDetails').show(); 
    }else{ 
     $('#requestDetails').hide(); 
    } 
}); 

Это приведет к кнопки 1 и 2 влияя на DIV с ID = requestDetails, в то время как кнопка 3 или любые другие без класса не будет.

+1

Спасибо за это! - Мне нравится подход класса, но я все еще ищу способ избежать вызова определенных значений в коде (см. Мой комментарий выше). Есть идеи для этого? – keewee279

+0

Я не уверен, как вы генерируете кнопки. когда они сгенерированы, у вас есть логика, зная, влияет ли эта кнопка на DIV или нет? Возможно, я не могу полностью понять этот вариант использования, но если у вас есть логика, чтобы понять, какие кнопки будут влиять на DIV при создании, почему бы просто не добавить специальный класс к этим кнопкам при создании? –

+1

Я нашел способ добиться того, чего хотел, используя .hasClass - ваше предложение с классом указало мне в правильном направлении! Спасибо за это - проблема решена. :) - ... if ($ (this) .hasClass ('triggerDiv')) {...} ... – keewee279

3

попробовать

$('[name=requestType]').on('change', function() { 

    $('#requestDetails').toggle((this.value == 'value1' || this.value == 'value2')); 

}); 

DEMO

+0

Давай ТАК БАЛА. Мы ожидаем большего от вас –

+0

@JqueryKing unagal asirvatham eruntha pothum – Balachandran

+0

Спасибо за это, Бала! - Есть ли способ, которым я могу достичь того же, не указывая конкретных значений, поэтому просто произнеся первую или вторую радиостанцию ​​этого диапазона? Кнопки создаются динамически, поэтому я бы предпочел это решение. – keewee279

0

Без жесткого кодирования используйте родительский элемент, содержащий входные данные, и используйте селектор nth-child. См jsfiddle, например:

$('[name=requestType]').on('change', function() { 
    if($('#parent input:nth-child(2)').val() == $(this).val() ||$('#parent input:nth-child(3)').val() == $(this).val()) 
    $('#requestDetails').toggle(); 
}); 

http://jsfiddle.net/cwahL1tz/11/

также сделал один с точным поведением вы Вана получить: http://jsfiddle.net/cwahL1tz/13/

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