2

ユーザーがドロップダウンをクリックすると、それが複数選択要素に置き換えられるプロトタイプ用のプラグインを作成しようとしています。私はそれでほとんど終わりました。ユーザーが表示したいものを選択し、フォームを同じページに送信するまで、すべてがうまく機能します。タグのselected属性を使用して、ユーザーが選択したものを選択したままにするために PHP を使用しています。<option>その後、プラグインが実行され、オプションが複数選択にコピーされます。ここで問題が発生します。ユーザーが 3 つの項目を選択したとします。複数選択の HTML コードでは、3 つの項目すべてにselected属性があり、しかし、最後のものだけが強調表示され、その時点でフォームを再送信すると、実際には強調表示されたものだけが送信されます。これがデモです。これに関するヘルプは素晴らしいでしょう。ありがとう。

HTML

<select id="test1">
    <option>Option 1</option>
    <option selected="selected">Option 2</option>
    <option selected="selected">Option 3</option>
</select>

<select id="test2" multiple="multiple">
</select>​

JavaScript

$('test1').childElements().each(function(option){
    $('test2').insert(option);
});

</p>

4

1 に答える 1

3

最初のドロップダウンは複数選択ではなく、選択された項目を1つだけ持つことができるため、DOMは正規化され、オプションの1つだけでselectedプロパティがに設定されtrueます。

それらをコピーすると、属性はまだそこにあるように見えるので、それを読んで、それにselected応じてプロパティを設定する必要があります。

Prototypeを使用したことはありませんが、次のようなものを思いつきました。

$('test1').childElements().each(function(option){
    $('test2').insert(option);
    option.selected = $(option).readAttribute('selected');
});

jsFiddle -Chromeでのみテスト済み

于 2012-10-19T23:14:53.130 に答える