多选择不以编程方式选择值

时间:2012-10-23 15:00:03

标签: javascript jquery jquery-ui multi-select

我遇到DropDownList multiselect(Reference)的问题。

我想要的......

我想以编程方式单击下拉列表中的某些复选框,使用它们的值(对于回发问题)。

简报


在'参考'中,我发现jQuery中存在一个错误,所以我需要这样做 - >

$("select").multiselect("widget").find(":checkbox").each(function(){
    this.click();
});

所以,我试过这个并且工作了...然后,我添加了“[value ='value']”,它起作用了。这正是我所需要的。

$("select").multiselect("widget").find(":checkbox[value='value']").each(function(){
    this.click();
});

这就是我所做的:我在回发之前获得了一个包含所选值的数组( consultantValues )。然后,我想在下拉列表“Consultant”中找到带有数组值的复选框,最后点击它。

代码 - >

for (var x = 0; x < consultantValues.length; x++) {
    var consultantSelected = ":checkbox[value='" + consultantValues[x] + "']";
    var doConsultantStringCode = $("id$='ddlConsultant']").multiselect("widget").find(consultantSelected);    
    for (var a = 0; a < doConsultantStringCode.length; a++) {
        doConsultantStringCode[a].click();
    }
}

这就像一个魅力:B 顺便说一句,我使用“for”而不是“each”,因为它运行得更快。

问题


在其他下拉菜单中,我尝试做同样的事情......它有效,但突然间它停止了工作:/

代码 - &gt;

for (var i = 0; i < selectedManagements.length; i++) {
   var checkboxValue = ":checkbox[value='" + selectedManagements[i] + "']";
   var findCheckbox = $("[id$='ddlManagement']").multiselect("widget").find(checkboxValue);
   for (var k = 0; k < findCheckbox.length; k++) {
     findCheckbox[k].click();
   }
}

我坚持这个:/

备注

  • 我能看到的,findCheckbox的长度= 0 ...不明白为什么现在有0长度才有1 ...
  • 下拉列表是ASP控件。
  • 如果您需要任何额外信息,请告诉我

2 个答案:

答案 0 :(得分:2)

为什么不添加checked="checked"属性,而不是模仿点击?实际上,触发用户未启动的DOM事件实际上太糟糕了。

这样做:

$("select").multiselect("widget").find(":checkbox").each(function(){
    this.attr({ checked: "checked" });
});

答案 1 :(得分:0)

我终于设法解决了这个问题。

我和一些人合作,我们都在同一个网站上工作。 问题是有人在我的代码之后移动了设置多选的部分(使用它的配置)...

所以,我的代码正在寻找仍然不存在的东西,所以它没有做任何事情。

有两件事可做:

  • 1:在设置multiselect的代码之后放置以编程方式选择的代码。
  • 2:将下拉菜单多选。然后添加代码,最后添加多选配置。 (我最终做了XD)

2:示例:

        management.attr("multiple", 'multiple');

        if (selectedManagements != null) {
            for (var z = 0; z < selectedManagements.length; z++) {
                var checkboxValue = "[value='" + selectedManagements[z] + "']";
                var findSelectedCheckbox = management.children(checkboxValue);
                for (var lambda = 0; lambda < findSelectedCheckbox.length; lambda++) {
                    findSelectedCheckbox[lambda].setAttribute('selected', true);
                }
            }
        } 

           [...]

            management.multiselect({
                selectedList: 2,
                noneSelectedText: 'Select a management',
                width: 300
            }).multiselectfilter();

PS:我感谢@ mvbl-fst帮助改进我的代码:)