Javascript 将值设置为jquery自动完成组合框

Javascript 将值设置为jquery自动完成组合框,javascript,jquery,jquery-ui,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Jquery Ui Autocomplete,我正在使用 一切都很好。但我还想通过JavaScript设置特定的值,比如$(“#value”).val(“somevalue”),并将其设置为select元素,但不使用autocomplete更改输入元素 当然,我可以选择此输入并直接设置值,但这是其他方法吗?我尝试将bind设置为this.element类似this.element.bind(“change”,function(){alert(1)}),但没有效果。我不知道为什么 编辑 我找到了这个案子的解决办法。但是我不喜欢它。我已将以下代

我正在使用 一切都很好。但我还想通过JavaScript设置特定的值,比如
$(“#value”).val(“somevalue”)
,并将其设置为select元素,但不使用autocomplete更改输入元素

当然,我可以选择此输入并直接设置值,但这是其他方法吗?我尝试将bind设置为
this.element
类似
this.element.bind(“change”,function(){alert(1)})
,但没有效果。我不知道为什么

编辑

我找到了这个案子的解决办法。但是我不喜欢它。我已将以下代码添加到_createfunction for ui.combobox

this.element.bind("change", function() {  
    input.val( $(select).find("option:selected").text());  
});
当我需要更改值时,我可以使用
$(“#选择器”).val(“specificvalue”).trigger(“更改”)

这里是一个工作示例和jquery,我假设您想要更改select的值,更改其文本面,并在页面加载时将其选中

# 尝试2:

这是另一个提琴:,你的意思是你选择了一个选项,然后你想把这个值附加到一个输入区域的自动完成

$(".document").ready(function(){
     someString = "this,that";
        $("input").autocomplete({source: someString.split(",")}); 

    $("select").change(function(){
        alert($(this).val()+" appended");
someString = someString+","+$(this).val();
        $("input").autocomplete({source: someString.split(",")}); 


    });
});
你在找什么

该链接将jQueryUIAutoComplete的值设置为Java。焦点保留在输入上,以便可以使用普通键盘事件来导航选项

编辑:向组合框中添加另一个函数如何,如下所示:

autocomplete : function(value) {
    this.element.val(value);
    this.input.val(value);
}
并使用要设置的值调用它:

$('#combobox').combobox('autocomplete', 'Java'); 


我找不到任何可用的现有函数来执行您想要的操作,但这似乎对我来说很好。希望它更接近您所要求的行为。

我用了一种快速而肮脏的方法来设置值。但是,您确实需要知道要在下拉列表中显示的项目的值和文本

var myValue = foo; // value that you want selected
var myText = bar; // text that you want to display
// You first need to set the value of the (hidden) select list
$('#myCombo').val(myValue);
// ...then you need to set the display text of the actual autocomplete box.
$('#myCombo').siblings('.ui-combobox').find('.ui-autocomplete-input').val(myText);

我真的很喜欢andyb所做的,但我需要它在事件处理方面做得更多一些,以便能够处理触发变更事件,因为当点击enter或失去对输入的关注(点击tab或鼠标单击)时,“selected”无法处理

因此,使用andyb所做的作为基础,以及jQuery自动完成脚本的最新版本,我创建了以下解决方案:

  • 输入:如果菜单可见,则选择第一项
  • 焦点丢失:部分匹配触发未找到消息并清除条目(jQuery UI),但完全键入的答案“选择”该值(不区分大小写)
如何使用变更方法:

$("#combobox").combobox({
    selected: function (event, ui) {
        $("#output").text("Selected Event >>> " + $("#combobox").val());
    }
})
.change(function (e) {
    $("#output").text("Change Event >>> " + $("#combobox").val());
});
希望这能帮助其他需要额外更改事件功能的人弥补“选定”留下的空白。

@andyb, 我想重写一下:

    autocomplete: function (value) {
        this.element.val(value);

        var selected = this.element.children(":selected"),
                value = selected.val() ? selected.text() : "";
        this.input.val(value);
    }

什么样的html?看起来像拉拉…:)事实上不,我想跟着。如果i cal$(“#select”).val(“somevalue”)(“somevalue”已存在于选择选项中),则输入(添加了自动完成的元素)文本也会更改:)用户763228查看答案,然后b他所做的几乎是正确的。是的。这是正确的行为,但并不完整。您不应该忘记调用$(“#combobox”).val(“Java”)。请看我的编辑。我找到了解决办法。但我不应该忘记调用触发器函数,这让人不舒服。好吧,我想我明白了。您正在寻找一个不引人注目的解决方案。我添加了一个新的演示,可能会更好。这就是我要找的。非常感谢您。我不知道为什么,但我只让它作为
$(函数(){$('#combobox').combobox('autocomplete','Java');})工作
var selected=this.element.children(“:selected”);value=selected.val()?选定的。text():“”;//它将获得为输入值而选择的选项的文本值,而不是选项的值
    autocomplete: function (value) {
        this.element.val(value);

        var selected = this.element.children(":selected"),
                value = selected.val() ? selected.text() : "";
        this.input.val(value);
    }