如何手动单击Jquery多选框?

时间:2011-05-30 18:59:38

标签: jquery

我在页面上有几个多选框。当用户单击某个复选框时,我希望页面上的一个多选框自动被点击一定的值。你知道怎么做吗?

谢谢!

$("#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');

2 个答案:

答案 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');