1

DropDownList multiselect(リファレンス)に問題があります。

私が欲しいもの...

値を使用してドロップダウンからいくつかのチェックボックスをプログラムでクリックしたい(ポストバックの問題の場合)。

ブリーフィング


「リファレンス」で、jQueryにバグがあることがわかったので、これを行う必要がありました->

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

それで、これを試して動作しました...次に、「[value ='value']」を追加すると、動作しました。それはまさに私が必要としていたものです。

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

これは魅力のように機能します:Bちなみに、実行速度が速いため、「each」の代わりに「for」を使用します。

問題


他のドロップダウンでは、私は同じことをしようとします...それは機能しましたが、突然機能しなくなりました:/

コード->

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です...以前は1だったのになぜ今は0の長さなのかわかりません...
  • ドロップダウンはASPコントロールです。
  • 追加情報が必要な場合は、お知らせください
4

2 に答える 2

2

checked="checked"クリックをエミュレートする代わりに、属性を追加してみませんか?これは実際には、ユーザーが開始しなかったDOMイベントをトリガーするにはあまりにもハックっぽいです。

これを行うだけです:

$("select").multiselect("widget").find(":checkbox").each(function(){
    this.attr({ checked: "checked" });
});
于 2012-10-23T17:15:36.230 に答える
0

私はついにこれを解決することができました。

私は何人かの人々と仕事をしています、そして私たちは皆同じサイトで働いています。問題は、誰かが私のコードの後に​​(その構成で)複数選択が設定された部分を移動したことでした...

それで、私のコードはまだ存在しないものを探していたので、何もしませんでした。

実行できる2つのこと:

  • 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に感謝します:)

于 2012-10-24T15:58:04.280 に答える