Что не так с моим взаимоисключающим сценарием радиовхода? - PullRequest
1 голос
/ 18 января 2012

Это не работает, но если я закомментирую uncheck.removeAttr('checked'), это работает! Где я иду не так?

Маленький HTML как пример:

<input type="radio" name="type" value="duration" checked="true" />
<select id="duration" class="duration">
    <option value="P30D">30 giorni</option>
    <option value="P1Y">365 giorni</option>
</select>

<input type="radio" name="type" value="interval" />
<select id="year">
    <?php foreach($years as $y) : ?>
        <option value="<?php echo $y->k; ?>">
    <?php echo $y->v; ?>
        </option>
    <?php endforeach; ?>
</select>

jQuery click() Событие функции:

$('select').click(function() {

    var check   = $('input[type="radio"][value="duration"]');
    var uncheck = $('input[type="radio"][value="interval"]');

    if(!$(this).hasClass('duration')) {
        var old = check;
        check = uncheck;
        uncheck = old;
    }

    check.attr('checked', true); // Same: .attr('checked', 'checked')
    uncheck.removeAttr('checked');

})

Ответы [ 2 ]

1 голос
/ 18 января 2012

это должно быть

check.attr('checked', 'checked');

ОБНОВЛЕНИЕ

Хорошо, поэтому, чтобы ответить на ваш вопрос, как выбрать переключатель при выборе значения из поля выбора, вы быиметь следующий JavaScript:

$('select').click(function() {
    $('input[type="radio"]').removeAttr('checked'); // remove all checked from radio inputs
    $(this).prev('input[type="radio"]').attr('checked', 'checked'); // checks the above radio button
});
0 голосов
/ 18 января 2012

Попробуйте использовать .prop () вместо .attr () в этом случае.

...