2012-10-23 20 views
1

我遇到DropDownList多选(Reference)问题。多选不以编程方式选择值

我想要什么...

我想以编程方式单击从下拉菜单中的一些复选框使用其值(回传事项)。

BRIEFING


在 '参考',我发现有一个在jQuery的一个bug,所以我需要做到这一点 - >

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

于是,我尝试这样做,工作...然后,我添加了“[价值='价值']”,它的工作。这正是我需要的。

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

这里就是我所做的:我得到一个数组与选定的回发之前(consultantValues)的值。然后,我想用数组中的值找到下拉“顾问”中的复选框,最后单击它。

代码 - >

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(); 
    } 
} 

这就像一个魅力:乙 顺便说一句,我用“为”而不是“每个”,因为它的运行速度更快。

问题


在其他下拉列表中,我尝试做相同的... ...它的工作,但它突然停止工作:/

代码 - >

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控件。
  • 如果您需要任何额外的信息,只是让我知道

感谢您的时间:)

+0

应该是'$(“[ID $ ='ddlManagement']“)',不是?你错过了一个'['。不知道为什么它之前有一个元素。运行它在萤火虫,看看它返回。 – jeremyharris

+0

Sry,我现在编辑它......我只是错过了在帖子^^ U 在代码上,它写得很好:P 谢谢:) –

回答

2

代替模拟点击,你为什么不只是添加checked="checked"属性?实际上,这太触动了,无法触发用户没有启动的DOM事件。

只是这样做:

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

谢谢!不知道! 尽管我已经用checked =“checked”对它进行了测试,但它没有奏效。它说这个方法不存在。 幸运的是,当我设法使它工作时,发现了类似于'attr()''setAttribute()'方法的东西,并且使用了'setAttribute('selected',true)'。 谢谢你帮助改进我的代码:) –

+0

哦,等等,你正在使用Prototype而不是jQuery。我没有意识到这一点。正确,他们没有'attr'方法。除此之外,它应该已经工作了,基本上它不是一个好主意,因为我说要模拟DOM事件,除非它们是由用户触发的。而且你的问题肯定不在于它一般不起作用 - 问题在代码中的某处。也许可以在某处添加'debugger'并查看控制台中发生了什么。 –

+0

我已经找到问题了。 当我作为答案发布时,问题在于有人在我的代码放在multiselect的配置之前(我不是单独工作:P)......因此,我的代码从来没有发现任何东西,它什么也没有做......然后下拉变为多选。 因为你写了有价值的信息,所以我会把它作为一个可以接受的答案。非常感谢:) –

0

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

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

所以,我的代码寻找的东西,仍然不存在,所以它什么都没做。

两种可能的事情要做:

  • 1:放置,设置多选代码之后编程选择代码。
  • 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帮助改善我的代码:)

相关问题