使用链接和asmselect选择选择表单选项

时间:2011-12-11 22:01:18

标签: jquery forms asmselect

我已整合jquery-asmselect ,并希望能够使用页面上的其他链接选择选项。要想象我正在尝试做什么,您可以查看页面here

这是我用于asmselect的jquery代码:

$(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 :(得分:0)

首先,您需要识别您正在点击的邻居。添加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; 
});

基于this asmselect示例。您只需根据点击的链接获取对应选项,然后调用其上的change();触发器。

<强>编辑:

以上代码失败了很长时间:P这是新版本(使用working fiddle):

$(".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();,并删除旧的选项标签。插件不喜欢尝试更改标签本身而不创建新标签...我不得不添加if (...)的东西,因为添加邻居(在选择中禁用它),然后再次点击它邻居,它在选择上启用它(我们不希望这样,因为它已经被选中)。在这种情况下,如果我们点击禁用邻居的链接,我们将什么也不做,选项将保持不变。

很抱歉,如果我的解释很糟糕,我花了一段时间来解决问题,我不得不再次建立一切,我觉得缺乏英语xD希望它有效!