添加复选框以自动完成-jQuery

时间:2015-06-19 05:21:08

标签: javascript jquery jquery-ui checkbox jquery-ui-autocomplete

我正在处理这段代码,我使用jQuery UI进行自动完成。现在我需要一些帮助,为它添加复选框,以便我可以做多个选择,它反映在我的字段与逗号分离。我找到了一个我想创建的插件,但我不想使用任何插件来[我的工作] http://www.igniteui.com/combo/selection-and-checkboxes

<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/jquery-ui.js"></script>
<link rel="stylesheet" href="js/jquery-ui.css">
<body>
    <input id="condition" type="text" placeholder="condition">
</body>
<script>
    var availableTags = [
               "ActionScript",
               "AppleScript",
               "Asp",
               "BASIC",
               "C",
               "C++",
               "Clojure",
               "COBOL",
               "ColdFusion",
               "Erlang",
               "Fortran",
               "Groovy",
               "Haskell",
               "Java",
               "JavaScript",
               "Lisp",
               "Perl",
               "PHP",
               "Python",
               "Ruby",
               "Scala",
               "Scheme"
    ];

    $(document).ready(function () {
        $('#condition').autocomplete({
            source: availableTags,
            minLength: 0
        }).focus(function () {
            try {
                $(this).autocomplete("search");
            }
            catch (e) {

            }
        });
    });
</script>

1 个答案:

答案 0 :(得分:2)

基本上你首先需要改变jQuery自动完成的输出。

像这样的东西

$('yourElement').autocomplete({ /* autocomplete config here */ }).data( "autocomplete" )._renderItem = function( ul, item ) {
    var checked = ($.inArray(item.label, selectedItems) >= 0 ? 'checked' : '');

    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( '<a><input type="checkbox" ' + checked + '/>' + item.label + '</a>' )
        .appendTo( ul );
};

然后,您必须将拾取的元素存储在变量(数组)

$('#yourElement').autocomplete({
    // Configs
    select:function(event, ui) {// Onselect event
        // Don't forget to check if the item is already in the array
        // and if it's the case to remove it

        selectedItems.push(ui.item.label); 
    }
});

不要 selectItems 是一个数组,你需要在脚本中定义

您可以在此JSFiddle上看到此代码将在自动填充列表中输出的内容

希望它会对你有所帮助