0

この 1 つの問題は、最近私を怒らせています。.each() では、select 要素をループして、それらを jquery ui コンボボックスに変換しています。それはうまくいきます。選択した値の設定に関しては、問題があります。同じ .each() で、選択した値を他の場所で取得した値に設定しようとしています。

 $("#" + e + " [role='select']").each(function () {
  $(this).combobox();
  var selId = '#ContactCategoryId';
  var cellv = '9';
  $(selId+" option[value=" + cellv + "]").attr("selected", 'true');
 });

上記のコードが完全に機能するようになったので、コンボボックスを値 9 とテキスト値 "Cell Number" に設定します。以下のコードは失敗し、エラーは発生しませんが、選択した値は変更されません。現在の選択要素から Id を取得して、以下のように動作させる必要があります: $(this).attr('id')。私は非常に多くの異なることを試しました。誰かが私にここで光を見せてください。

$("#" + e + " [role='select']").each(function () {

  $(this).combobox();
  var selId = '#'+$(this).attr('id');
  var cellv = '9';
  $(selId+" option[value=" + cellv + "]").attr("selected", 'true');
});

JQuery 1.7 と最新の JQuery UI を使用しています。ありがとうございます。

ジェームズ


私の評判のために、私は自分の質問に答えることができなかったので、ここに私の解決策があります:

OK、この問題は、解決策を見つけた後、本当にイライラしました。通常、jquery プラグインで問題が発生した場合は、ソースを見てそれをいじってみますが、この問題については試していませんでした。費用がかかりました。これが解決策です。非常に多くの場合、答えは単純です。

        $("#" + e + " [role='select']").each(function () {
             if($(this).css('display')=='none')
             {
                 $(this).combobox("destroy");
             }
             $(this).combobox();
        });

私が今来たと思ったソースを見ると、どこかでその価値を得るに違いありません。だから私は手動で値を設定します:

              $(this).val('9')

フォームの最初のオープニングでは機能しましたが、2 番目のフォームでは機能しませんでした。存在する場合はそれを破棄してからコンボボックスを作成する必要があることに気付きました。私はあなたの第一人者がより良い解決策を持っていると確信していますが、私はこれがうまくいったことをうれしく思います

4

1 に答える 1

0

コンボボックスは実際にはselect要素ではないため、想像するほど簡単ではありません...コンボボックス要素を更新すると選択要素が更新されますが、その逆はありません...私が見ることができる唯一の方法は、コンボボックスを破棄して再作成することですそれ...これは機能します:

$("#divselect").children('select').each(function() {

    $this = $(this); // cache $(this)
    var cellv = '0'; // new value

    // Destroy the combobox
    $this.combobox("destroy");

    // Unselect the currently selected option
    $("option:selected",$this).removeAttr("selected");

    // Select the option you want to select
    $("option[value='"+cellv+"']",$this).attr("selected", "selected");

    // Create the combobox again
    $this.combobox();

});

作業例はこちら

また、注意..これを行う必要はありません:

$("#showAnyCity").click(function() {
    checkdiv();
});

あなたはこれを行うことができます

$("#showAnyCity").click(checkDiv);
于 2012-07-27T09:28:21.940 に答える