skillup

技術ブログ

JavaScript デザイン

jquery multipleについて(応用編) keepOrder

投稿日:2016年3月15日 更新日:

さて、複数選択だけなら前回のエントリーだけでなんとかなりますが、左の項目の順番を入れ変えて保存したい場合、難易度がかなり上がります。

公式ページには下記のように書けばOKとかいてあります。

このように書けば確かに左の項目の順番を選んだ順に組み替えることができます。

が、この方法だと実際にsubmitをしたときに順番が保存されないのです・・・

なおかつ、値を実際にデータベースに保存して意図した順番で表示したいときやエラー処理などで値が戻ってきたときに入力値の順番を保存させておくのも一筋縄ではいきません。

この対処について書きたいと思います。

順番を保存したまま送るには

選んだ項目の順番を保存したい場合は、残念ながらこのプラグインのディフォルトの設定だけではだめです。

multiSelectには値を選んだ後の処理を書くことができます。

詳しくは公式ドキュメントに書いてありますが、下記のように書きます。(afterSelect,afterDeleteがそうです。)

#data_idというのはhiddenで選択値をカンマ区切りで入力しておくフィールドで、これをhtmlに用意しておきます。

要するに項目を選ぶたびに値を別の場所にカンマ区切りで登録します。これが順番を保持した真の値になります。

削除する場合はちょうど対象の値だけを削除することになります。

データベースで処理をしたりする場合にはこちらの値を使います。

値を読み込むとき

上記は値を送信するときですが、エラーなどで値を再読み込みするときや、データベースから読み込むときも順番を保持させたい場合は特別な処理がいります。

1 この場合、まず値を順番通りにならべ、カンマ区切りでhiddenでhtmlに入れておく(さきほどのdata_idの原理をそのまま使います。)

2 ページを読み込んだ瞬間に下記のコードを実行させる。

multiSelect(“select”,何らかの値)で選択状態にすることができます。

配列を読み込ませてもエラーにはならないのですが、うまく順番が保存できませんでした。

上記のようにすれば値の順番を保存させたまま、データの更新、再表示が可能になります。

コードで書くとなんてことはないんですが、これだけの実装にやたら時間がかかりました。

参考リンク

stackoverflow jQuery MultiSelect – output data in the order in which it was selected

-JavaScript, デザイン
-

執筆者:


  1. ほにゃほにゃ より:

    afterSelect,afterDeleteを使わなくてもこれで並び順のまま値を取得できますよ。
    var orderedItems = new Array();
    $(‘.ms-elem-selection.ms-selected’).each(function(i, elem) {orderedItems.push( $(elem).text() );});

matsumoto へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

クロスドメインがらみのajax

ajaxで別ドメインに対して、プログラムを実行したい時に注意すべきことなどを。 Contents1 ログ、レスポンスヘッダをとにかく追う2 特定ドメインからの許可3 フレームワーク側での認証ロジック( …

no image

AngularJS テーブル行のソート入れ替え&ドラック&ドロップ

受注伝票みたいなものを作ると伝票の登録画面はヘッダーと明細に分かれますね。 私が携わったプロジェクトでは、大体一画面でヘッダー情報と明細情報を入力することが一般的でした。 今回AngularJSでその …

no image

Angularでのイベント+改行+echoでのバッファサイズ変更

Contents1 Angularのイベント処理2 Angularでの改行ネタ3 echoでのバッファサイズ変換 Angularのイベント処理 Angularを使っていて楽なのはHTMLタグにインベン …

no image

cssでのmax,minや画像の配置に関して

主に画像なんかで使われるんですが、max(min)-width(height)などの使い方に関して。 えーmax(min)はどういうときに使われるかというとまず可変な要素に対して使われることが多いです …

no image

UIまで手が回らないプログラマのための画像加工サービス&ツール紹介など

本業はプログラマ―なんですが、ガチンコ塾のブログの画像を作る程度の加工などをちょこちょこやってます。 プログラマーといえどUIを全く気にしないのは問題ですし、中小企業だと広く浅くできる人間が求められる …

アーカイブ