Выберите опцию выбора формы, используя ссылки и asmselect - PullRequest
0 голосов
/ 12 декабря 2011

Я интегрировал jquery-asmselect и хотел бы иметь возможность выбирать опции, используя другие ссылки на странице. Чтобы увидеть, что я пытаюсь сделать, вы можете просмотреть страницу здесь

Вот код jquery, который я использую для asmselect:

$(document).ready(function() {
    $("#CategoryID").asmSelect({
        addItemTarget: 'bottom',
        animate: true,
        highlight: false,
        sortable: false
    }).after($("<a href='#' class='select-all'>select all neighborhoods</a>").click(function() {
        $("#CategoryID").children().attr("selected", "selected").end().change();
        return false;
    })); 
    $("#search_SubCategoryID").asmSelect({
        addItemTarget: 'bottom',
        animate: true,
        highlight: false,
        sortable: false
    }).after($("<a href='#' class='select-all'>select all cuisines</a>").click(function() {
        $("#search_SubCategoryID").children().attr("selected", "selected").end().change();
        return false;
    })); 
}); 

1 Ответ

0 голосов
/ 12 декабря 2011

Прежде всего, вам необходимо определить, в каком районе вы щелкаете. Добавление rel (как в опциях) может работать:

...
<li class="evillage">
    <a href="#" rel="asm0option0">East Village/LES</a>
</li>
...

Затем добавьте этот скрипт:

$(".search-map a").click(function(event) {
    event.preventDefault();
    var hood = $(this).attr('rel');
    var $option = $('option[rel=' + hood + ']');

    $option.change();
    return false; 
});

На основании этого примера asmselect. Вам просто нужно получить соответствующий вариант в зависимости от нажатой ссылки, а затем вызвать триггер change();.

РЕДАКТИРОВАНИЕ:

Приведенный выше код не удался: P Вот новая версия (с работающей скрипкой ):

$(".search-map a").click(function() {

    var $city = $(this).html();
    var $rel = $(this).attr('rel');
    var disabled = $('#asmSelect0 option[rel=' + $rel + ']:first').attr('disabled');

    if (typeof disabled !== 'undefined' && disabled !== false) {
        return false;
    }

    var $option = $('<option></option>').text($city).attr({'selected': true, 'rel': $rel});

    $('#asmSelect0').append($option).change();
    $('#asmSelect0 option[rel=' + $rel + ']:first').remove();

    return false; 
}); 

Мне нужно было сделать что-то, что мне не очень нравилось, но я не мог найти другого способа сделать это, не вступив в конфликт с плагином. Во всяком случае, это не так уж плохо. В основном я получаю название района, rel для идентификации опции, генерирую новый <option>, change(); it и удаляю старый тег option. Плагину не нравилось пытаться изменить сам тег без создания нового ... Я должен был добавить элемент if (...), потому что при добавлении окрестности (отключение ее в списке выбора) и повторном нажатии на ту же окрестность, он включил его на выбор (и мы не хотим этого, так как он уже выбран). С этим условием, если мы нажмем на ссылку, соседство которой отключено, мы ничего не будем делать, и опция останется прежней.

Извините, если мое объяснение - отстой, у меня ушло некоторое время, чтобы решить проблему, мне пришлось все заново собрать, и я почувствовал, что мне не хватает английского xD Надеюсь, это сработает!

...