是否有一个jQuery Autocomplete插件会强制选择一个项目?

时间:2009-12-30 16:20:33

标签: jquery autocomplete

autocomplete ,但它并不强制选择项目。我需要这样的东西,但它必须强制选择一个项目才能“提交”。

它存在吗?

6 个答案:

答案 0 :(得分:4)

您可以使用自动填充的"change" event

        var availableTags = [
            "ActionScript",
            "AppleScript"
        ];
        $("#tags").autocomplete({
            source: availableTags,
            change: function (event, ui) {
                if(!ui.item){
                    //http://api.jqueryui.com/autocomplete/#event-change -
                    // The item selected from the menu, if any. Otherwise the property is null
                    //so clear the item for force selection
                    $("#tags").val("");
                }

            }

        });

答案 1 :(得分:2)

这是我使用.blur的解决方案(而且我使用名称| ID对)

jQuery("#username").autocomplete(
    "/yii_app/stock/suggestUser",
    {
        'mustMatch':true,
        'multiple':false,
        'formatItem':function(result, i, num, term) {
            return '<small>'+result[1]+'</small>&nbsp;&nbsp;&nbsp;'+ result[0];
        }
    }
).result(
    function(event,item) {
        $("#user_id").val(item[1]);
    }
).blur(
    function() {
        $("#user_id").val('');
        $(this).search();
    }
);

user_id是隐藏的输入字段,username是文本输入字段 ajax结果使用以下格式: user1name | user1id \ n user2name | user2id \ n

答案 2 :(得分:1)

使用选项:

mustMatch:true,

这可以在Bassistance自动完成插件中找到。我不知道它是jQuery自动完成的一部分还是Bassistance的自动完成,但是它有效!

答案 3 :(得分:1)

这是我目前使用jQuery UIautocomplete

的解决方案
    $('#some-input').autocomplete({
        source: 'some-url',
        autoFocus: true,
        minLength: 2,
        select: function(event, ui) {
            //remember the selected item
            $('#some-input')
                .data('selected-item', ui.item.label);
        }
    }).blur(function() {
        var value = $('#some-input').val();
        //check if the input's value matches the selected item
        if(value != $('#some-input').data('selected-item')) {
            //they don't, the user must have typed something else
            $('#some-input')
                .val('') //clear the input's text
                .data('selected-item', ''); //clear the selected item
        }
    });

每次触发模糊事件时,都会检查输入的值是否先前已被选中。如果尚未选中(您知道因为select事件从未触发),则“selected-item”变量将与输入的值不匹配。然后你可以做任何你想做的事情(我清除输入,但你可以尝试其他的东西)。

答案 4 :(得分:0)

将其与validation插件结合使用。只需为验证插件创建字段required

答案 5 :(得分:0)

您还可以使用内置提交事件

$('Autocomplete').autocomplete({
          select: function(event, ui) {
                       $('submit').show();
                  }
});