0

JQuery-UI からモーダル ダイアログ フォームを変更し、 2 つのドロップダウンチェックリスト (DDCL)を追加しました。ラジオ ボタンとチェックボックスの状態を保持したいのは、お客様がシリアル番号と場合によっては部品番号 (空白のまま、S/N が必要です)。私は使用しています:

$("#services").dropdownchecklist("refresh"); $("#modelNumber").dropdownchecklist("refresh");

ボタンとチェックボックスの状態を更新するには(更新せず、顧客が表示されるデフォルトをそのまま受け入れると、実際にはボックスに表示されているものではなくnull入力が表示されます)、ボタンとチェックボックスを再確認できます。彼らが入力したい次の楽器のチェックボックス。更新前に顧客の選択を保持し、更新後に元に戻す必要があります。

私は州を取得しようとしました:

var selectedServices = $("#services").prop("checked");

var selectedModel = $("#modelNumber").prop("checked");

しかし、「新しいインストゥルメントを追加」をクリックしたときに、それらを選択オプションに再適用する方法がわかりません。次のようにして、すべてのチェック ボックスをオンにして、最後のラジオ ボタンを取得できます。

selectedServices = $("#services").find("option").attr("selected", "selected"); selectedModel = $("#modelNumber").find("option").attr("selected", "selected");

上記の更新を行う前に、それは私が必要とするものではありません.最後のラジオボタンをチェックするだけで、利用可能な15のサービスすべてのリストが表示されます。基本的には「すべて選択」です. 役に立ちません。

ここでフィドル: Add Instrument (SO question version) . 「Add New Instrument」をクリックし、モデル番号を選択し、シリアル番号のテキスト ボックスに任意の文字 (1 ~ 8 文字) を入力し、いくつかのサービスを選択して、「Add Instrument」をクリックします。「Add New Instrument」をもう一度クリックすると、両方の DDCL がデフォルトの「Click to Select...」に設定されていることに注意してください。私が望むのは、顧客が行う最後の選択です。

4

1 に答える 1

2

関連する質問で質問を投げたときに、複数の選択メニューに値を設定するためのいくつかの解決策を見ていました(一致するキーワードがなかったので、なぜこの質問を投げるべきなのか不思議です)。というわけで、背景は十分に。

私も同様の問題を抱えていましたがdropdownchecklist、正直なところ、これを微調整しようとする価値があるとは思いません。最新のjqueryに適切なサポートを提供しておらず、最新のブラウザなどと完全に互換性がない、時代遅れの古いプラグインです(詳細については、このサイトの制限セクションを参照してください。このウィジェットで私が最も嫌いだったのは、チェーンをサポートしていないことでした、これは jQuery の非常に重要な機能です。

昨年このウィジェットを使用していたときも同様の苦境に直面し、それを修正する方法を見つけました。これは私がしたことです:

  1. フォームからのデータ (つまり、selected オプション) をdataタグbodyに保存しました。
  2. そのため、再度開いたときに、それらの値を同じものから取得dataし、変数に保存しましたselectedOpts
  3. タグにselectedOpts戻るselect
  4. "refresh"タグにdropdownchecklist付いているselect

ここにデモがあります: http://jsfiddle.net/4D8LU/4/ (デモの更新版です)

デモに追加したもの

  1. initのコールバック内に、"Add Instrument"選択したオプションをofタグdialogにプッシュするコード行を追加しました。databody

    $("body").data("prevOpts", 
                   {
                    "prevOpts": {
                     modelno": modelNumber.val(),
                         "services": services.val()
                    }
    });
    
  2. 呼び出しresetDDCLは から値を取得し、dataそれらの値をselects に設定します。関数は次のとおりです。

    function resetDDCL() {
       //take the data from body
       var selectedOptions = $("body").data("prevOpts").prevOpts;
    
      //set the services
      services.val(selectedOptions.services);
      services.dropdownchecklist("refresh");
    
      //set the model number
      modelNumber.val(selectedOptions.modelno);
      modelNumber.dropdownchecklist("refresh");
    }
    

お役に立てれば。繰り返しますが、これに代わる別の方法を使用することをお勧めします。他のアイデアについては、これを見てください: 10+ JQUERY SELECTBOX/DROP-DOWN PLUGINS

ドロップダウンメニューのスタイリングに現在使用しているもの

これ。非常に柔軟で、最新の jquery バージョンをサポートし、チェーンをサポートしていると思います。

于 2013-06-08T17:10:26.317 に答える