Javascript 将值设置为jquery自动完成组合框
我正在使用 一切都很好。但我还想通过JavaScript设置特定的值,比如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)}),但没有效果。我不知道为什么 编辑 我找到了这个案子的解决办法。但是我不喜欢它。我已将以下代
$(“#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);
}