Выберите параметры формы, используя ссылки и asmselect

Я интегрировал 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 ответ

Решение

Прежде всего, вам нужно определить, в каком районе вы нажимаете. Добавление 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; 
});

На основании этого примера. Вам просто нужно получить соответствующий вариант в зависимости от нажатой ссылки, а затем вызвать 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; 
}); 

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

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

Другие вопросы по тегам