我在页面上有几个多选框。当用户单击某个复选框时,我希望页面上的一个多选框自动被点击一定的值。你知道怎么做吗?
谢谢!
$("#select_country").multiselect({
multiple: false,
header: "Select a country",
noneSelectedText: "Select a country",
selectedList: 1
});
====== 到目前为止,我已经尝试过这些方法但没有成功:
$("#select_country").multiselect("widget").find("input:checkbox").each(function(){
this.click();
});
$("#select_country").multiselect("widget").find("input:checkbox").triggerHandler('click');
$("#select_country").trigger('click');
答案 0 :(得分:1)
看看这是否有帮助(demo @ http://jsfiddle.net/ehynds/PKypd/):
var second = $("#select_something").multiselect();
$("#select_country").multiselect({
multiple: false,
header: "Select a country",
noneSelectedText: "Select a country",
selectedList: 1,
click: function( event, ui ) {
// if the user clicks "usa", check the first box
// in the second select. if the user selects "canada",
// check the second box.
//
// the call to filter() ensures that the items from the
// second select remain selected if the user chooses
// the same item from the first select multiple times.
//
// you can easily swap out .eq() for another filter()
// and to choose checkboxes by value instead of their
// position.
second.multiselect('widget')
.find(':checkbox')
.eq(ui.value === 'usa'? 0 : 1)
.filter(':not(:checked)')
.each(function(){
this.click();
});
}
});
另外,不要忘记多重选择只是对底层选择框的视觉增强。您在multiselect中所做的任何更改也会在select元素本身上进行,反之亦然。因此,您不必在多选中弄清楚如何执行此操作;您可以在原始选择框中选择一个选项标签,然后调用.multiselect('refresh')
告诉窗口小部件自行刷新。
您在DOM节点上调用.click()
是正确的,而不是triggerHandler()
或$.fn.click()
。原因是因为jQuery中有this bug,其中trigger(“click”)在复选框本机click()方法之前调用处理程序。
答案 1 :(得分:1)
$("#select_country").multiselect("widget").find(":radio[value='PUT_YOUR_VALUE']").each(function() {
this.click();
});
$("#select_country").multiselect('refresh');