Установить выбранную опцию через гиперссылку, используя jQuery - PullRequest
0 голосов
/ 26 августа 2011

Я хочу установить выбранную опцию 2 выбора входов по гиперссылке.Это является частью корзины покупок, где я показываю, есть ли товар на складе, и если он есть, пользователь может щелкнуть по нему.Это устанавливает значения соответствующих опций.Это отлично работает для размера, когда это целые числа (не работает для 4.5) и не устанавливает значение подгонки.

Я поместил код в jsfiddle на http://jsfiddle.net/jeepstone/G6Mz5/

Есть идеи?

Большое спасибо

Ответы [ 4 ]

2 голосов
/ 26 августа 2011

Там может быть более простой способ, но он основан на коде, который вы уже использовали в скрипте:

$('.instock').bind({
    click: function(e) {
        e.preventDefault();
        var data = $(this).attr('rel').split(',');

        $('#size').find("option").filter(function() {
            return $(this).text() === data[0];  
        }).attr('selected',true);
        $('#fitting').find("option").filter(function() {
            return $(this).text() === data[1];  
        }).attr('selected',true);
    }
});

Получает все элементы option и затем фильтрует их, оставляя только те, которые соответствуют текущему тексту.

Вот обновление скрипки .

0 голосов
/ 26 августа 2011

Период является специальным символом, и его необходимо экранировать двумя обратными слешами.Попробуйте это:

$('#size').find('option[text=' + data[0].toString().replace(".", "\\.") + ']').attr('selected',true);
0 голосов
/ 26 августа 2011

Все, что вам нужно сделать, это установить val() для выбора на тот, который вы хотите.

См .: http://jsfiddle.net/tclayson/kE4c5/

<select id="mySelect">
    <option value="1">One</option>
    <option value="2">Two</option>
</select>

<br /><br />

<a href="#" id="clicked">Click</a>

Когда вы нажимаете на ссылку "нажмите «, он просто устанавливает значение выбора (#mySelect) равным 2.

$(document).ready(function(){
    $('#clicked').click(function(){
        $('#mySelect').val('2');
        return false;
    });
});

Поэтому вместо попытки find() опции, которую вы хотите установить для выбранной, вы можете просто изменить выбор на основена значениях опций (например, 4.5 будет 46 в вашем случае).

0 голосов
/ 26 августа 2011
$('.instock').bind({
        click: function(e) {
            e.preventDefault();
            var data = $(this).attr('rel').split(',');


            $('#size').find('option:contains("' + data[0].toString() + '")').attr('selected',true);
            $('#fitting').find('option:contains("' + data[1].toString() + '")').attr('selected',true);
        }
    });

Я проверил его по вашей ссылке jsfiddle, теперь он работает

...