如何在jqueryUI组合框中附加onchange函数?这是我的代码:
$(".cmbBox").combobox({
change:function(){
alert($(this).val());
}
});
当值更改时,它将提醒更新的值。
任何帮助请......:)
答案 0 :(得分:49)
组合框示例源在示例中就可以了。我通过修改源代码来触发底层选择的change
事件(更改插件内自动完成初始化内的select
事件处理程序):
/* Snip */
select: function( event, ui ) {
ui.item.option.selected = true;
self._trigger( "selected", event, {
item: ui.item.option
});
select.trigger("change");
},
/* Snip */
然后为change
的常规select
事件定义事件处理程序:
$(".cmbBox").change(function() {
alert(this.value);
});
不幸的是,这与普通select.change
事件完全不同:即使您从组合框中选择相同的项目,它也会触发。
答案 1 :(得分:20)
$("#theComboBox").combobox({
select: function (event, ui) {
alert("the select event has fired!");
}
}
);
答案 2 :(得分:1)
进入ui.combobox插件:
我在select方法的末尾添加了:
$(input).trigger("change", ui);
我在“var input ...”之前添加了:
select.attr('inputId', select.attr('id') + '_input');
之后,要在ui.combobox上有一个函数onchange事件...我评论了更改方法并将其代码移动到扩展ui.autocomplete的checkval方法:
$.extend( $.ui.autocomplete, {
checkVal: function (select) {
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
valid = false;
$(select).children("option").each(function () {
if ($(this).text().match(matcher)) {
this.selected = valid = true;
return false;
}
});
if (!valid) {
// remove invalid value, as it didn't match anything
$(this).val("");
$(select).val("");
$(this).data("autocomplete").term = "";
$(this).data("autocomplete").close();
}
}
});
我将输入更改方法编码如下:
var oCbo = ('#MyCbo').combobox();
$('#' + oCbo.attr('inputId')).change(function () {
// from select event : check if value exists
if (arguments.length < 2) {
$.ui.autocomplete.checkVal.apply(this, [oCbo]);
}
// YOUR CODE HERE
});
答案 3 :(得分:0)
在文档的“事件”部分中,您handle a change喜欢这样......
$( ".selector" ).autocomplete({
change: function(event, ui) { ... }
});
答案 4 :(得分:0)
这似乎对我有用
if('function' == typeof(callback = ui.item.option.parentElement.onchange))
callback.apply(this, []);
之前
self._trigger("selected", event, {
答案 5 :(得分:0)
最简单的方法(恕我直言),如果你将组合框架部署为小部件:
在小部件中找到“_create”方法
内部查找“自动填充”(管理输入)
添加(使用)“select”方法以获取您的数据:ui.item.value
(function($){ $.widget( "ui.combobox", { // default options options: { //your options .... }, _create: function() { //some code .... //this is input you look for input = $( "" ) .appendTo( wrapper ) .val( value ) .addClass( "ui-state-default" ) //this is autocomplete you look for .autocomplete({ delay: 0, minLength: 0, source: function( request, response ) { //some code ... }, //this is select method you look for ... select: function( event, ui ) { //this is your selected value console.log(ui.item.value); }, change: function( event, ui ) { //some code ... } }) //rest of code }, destroy: function() { this.wrapper.remove(); this.element.show(); $.Widget.prototype.destroy.call( this ); } });
答案 6 :(得分:0)
事实上,onchange事件已经有了一个“钩子”。
只需更改方法调用或所需回调的以下行:
autocompletechange: "_removeIfInvalid"
答案 7 :(得分:0)
$("#theComboBox").combobox({
select: function (event, ui) {
alert("the select event has fired!");
}
}
);