【问题标题】:How to allow to choose only pre-defined options with jquery ui combobox?如何只允许使用 jquery ui 组合框选择预定义的选项?
【发布时间】:2012-01-01 23:21:21
【问题描述】:

Here 是我当前的 jquery ui 组合框。它使用远程数据源。 Here 是对标准组合框应用相同的方法。但我不确定如何在我的情况下应用它。

【问题讨论】:

    标签: jquery-ui jquery-ui-autocomplete


    【解决方案1】:

    只需使用change 事件即可查看ui.item 是否已定义:

    /* snip */
    change: function (event, ui) {
        if (!ui.item) { 
            this.value = 'Any City';
        }
    }
    

    更新示例: http://jsfiddle.net/FL7Nx/

    根据您在下面的评论,如果您想动态确定默认值应返回的值,您可以将该值分配给小部件的 _create 方法中的选定选项:

    _create: function() {
        var self = this,
            select = this.element.hide(),
            selected = select.children(":selected"),
            value = selected.val() ? selected.text() : "",
            defaultValue = value;
    

    然后在 change 函数中:

    change: function (event, ui) {
        if (!ui.item) { 
            this.value = defaultValue;
        }
    }
    

    更新示例: http://jsfiddle.net/jmdx4/

    【讨论】:

    • 谢谢,安德鲁。实际上,我在一页上有几个组合框,它们的默认值是不同的。如何为每个组合框始终定义第一个值?
    • 或者,也许我可以使用 jQuery Validation Plugin 进行相同的验证?
    • 谢谢,@AndrewWhitaker。我已经回到这个问题并尝试在我的代码中实现相同的功能。不知何故,defaultValue 总是包含最后一个组合框的值(如何在调用 _create 时分配正确的值)。我已经尝试在您的示例中进行模拟,并且它可以正常工作 - jsfiddle.net/jmdx4/5。知道我应该在我的代码中检查什么吗?谢谢。
    • @LA_:确保您没有将defaultValue 声明为全局变量,就像在this example 中一样。 (如果您仔细观察,您会发现在定义 defaultValue 之前有一个分号)。
    • 即看起来 defaultValue 在 jsFiddle 中用作局部变量,在我的代码中用作全局变量。而且,还有一个问题 - 如果输入不正确的值,然后在 ajax 发生时失去焦点(但尚未完成),则不会应用默认值。
    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 2011-03-07
    • 2011-04-28
    • 2011-02-13
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多