2

だから私はとても素敵なjQueryプラグインであるChosenを使用しています。http://harvesthq.github.com/chosen/

私がやっていることは、実際には「どちらか一方」の方法で2つの選択されたスタイルのドロップダウンを操作することです。つまり、ユーザーはどちらか一方からオプションを選択する必要があります。

したがって、ユーザーがドロップダウンの1つを選択すると、もう1つは(javascriptを介して)デフォルトの無効な値に戻されます。

両方のドロップダウンは、どのドロップダウンから来たかに関係なく、選択された値を実際に保持するために1つの非表示パラメーターによって支えられています。これは、イベントの両方のドロップダウンにリスナーを配置することで入力され.chosen().change()ます。

唯一の問題は、ユーザーがいずれかのドロップダウンで最初のオプションの1つを選択したときに「変更」イベントが発生しないように見えることです。これはすでに選択されているオプションであるため、「変更」ではないと思います。ただし、両方のドロップダウンの実際の最初のオプション(つまり、jsp内)は、通常の「選択してください」というテキストで無効になっているオプションです。

選択したオプションがすでに選択されている場合でも、変更イベントを発生させる方法はありますか?それとも、変更がない場合でも発生する「選択」イベントだけがありますか?

4

4 に答える 4

2

jquery オブジェクトで .trigger("change") または .change() を使用して、変更イベントを手動でトリガーできます。

于 2012-10-12T10:30:59.623 に答える
0

This worked for me:

//Get the dynamic id given to your select by Chosen
var selId = $('your_select').attr('id');
//Use that id to remove the dynamically created div (the foe select box Chosen creates)
$('#'+ selId +'_chzn').remove();
//Change the value of your select, trigger the change event, remove the chzn-done class, and restart chosen for that select
$('#'+selId).val('your_new_value').change().removeClass('chzn-done').chosen();

In a nutshell you are hard reseting chosen for your select. There might be an easier way than this, but this worked for me.

于 2012-11-01T15:21:59.573 に答える
0

Select2プラグイン(Chosenプラグインのリメイク)を使用して同じ問題が発生しました。

Combobox を select2 として宣言したときに、「allowClear: true」という行を忘れてしまいました。

$('#selectLabelMap').select2({
                   placeholder: "Sélectionner un label",                 
                   allowClear: true    // <=  don't forget "allowClear: true (re-init the comboBox)
               }        
于 2015-10-22T09:27:04.490 に答える
0

(DOM) の準備が整ったときに初めて変更をトリガーします。

    jQuery(function ($) {

        $('#myselect').trigger("change");   

    });
于 2016-09-29T11:50:01.943 に答える