- ベストアンサー
ドラッグで選択できるセルを指定する方法とは?
- 施設管理のサイトを作りたいと思っていますが、ドラッグで選択できるセルの範囲を指定したいです。
- セルをドラッグで選択するときに、最大で2列分だけしか選択できないようにしたいです。
- また、日付をまたいで選択できないようにする方法も知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
さきほどの回答者ですが… >最大で2列分だけしか選択できないようにしたいと思っています う~~ん。 それって、もしかすると選択できる2列がセットになっているのではないですか? (2列目、3列目)、(4列目、5列目)・・・というのであって(3列目、4列目)の2列ではダメとか。 ・・・と勝手に解釈して、今回は2箇所変更。 1)先ほどの箇所 pos.row = y; pos.col = x; pos.day = (x+1 - (x+1)%2) / 2; //←この行を追加 if(2>y || 1>x) pos = null; 2)「//セルの位置を取得」の少し下の if(!from || !to) の行を if(!from || !to || from.day != to.day) に変更 多分、これで大丈夫だと思いますが・・・ どうも、テーブル外(または、選択禁止セル範囲内)でマウスアップしてみるとわかりますが、必ずしも操作性が良いとは思えません。 また、 >施設管理のサイトを作りたいと思っています。 ということなので、あえて書きますが、現在のような逐次的な修正は地道に進んでいるように思えるかも知れませんが、方法としてあまり良い方法とは思えません。 サイトの利用者がこれを利用して予約入力したりするのでしょうか? あるいは限られた管理者だけが操作するものと仮定しても、予約済みの部分に誤って上書きしない方法はどのように考えていますか? 一つの予約時間帯をグループとして認識できるようにする方法は? 何よりも、クライアント側で入力したものを記録しておく方法はどのようにお考えなのでしょうか?(サーバなどにデータを保管しておく方法) また、その情報(サーバ上の情報)をクライアントで表示する方法は? サイトと言うからには、複数の場所からアクセス可能だと思いますが、ほぼ同時に同じ時間帯への予約があった場合は? などなど、全体の流れとそれを実現する方法をまとめた上で部分の作成にかからないと、次の問題を解決しようとするたびにそれまでのものを捨てて一から作らなくてはならない羽目に陥る可能性があります。 あるいは、それまでのものに固執するあまり継ぎ足しで、とんでもないものが出来上がる可能性も。
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
#1です。 内容を理解していないので、的外れかもしれませんが… >いかんせんユーザーインターフェースに乏しいもので^^; インターフェースに関わる部分だけについて、とりあえず感じたことを。 ・マウスに反応しない部分(タイトル部分や予約済み部分)のセルを識別できるようにしておけば、スクリプトはそれのチェックと日にちを跨がないチェックだけでいけるのではないでしょうか?(具体的にはクラス設定をしておくとか。そのほうが最終的にはスクリプトも単純になるかと思います。) ・上記による識別で、タイトル部分の表示書式や予約済みの部分の表示をCSSで指定しておくことで、位置に関わらず反映することができそう。 既予約のグルーピングも同様のことで識別できると思われます。(例:クラス指定を利用するとしてclass="reserved group1"とか) ・ドラッグのインターフェースとしては、選択対象外(表の外も含む)でマウスアップが行なわれたら、その状態でFixするかキャンセルしてしまった方がわかりやすいのではないでしょうか。 例えば、対象外でマウスアップされたらキャンセルしてしまい、正しい範囲でマウスアップされたらそのまま必要事項の入力ダイアログが表示されるとか。 ・画面表示に関して、ご提示のサンプル(単なるサンプルかも知れませんが)では、均質のセルがずっと並んでいるので右側、下側のセルほど位置を間違えやすいと思われます。 1日の単位(2列単位?)がわかるように区切りを入れたり、1週間単位での区切りを入れたり、土日祝日がわかるようになっていたり… 時間についても同様に何らかのガイドの線があるほうが見やすいと思います。(少なくとも正午の区切りぐらい) ・表の右側が時間と対象しやすいように時間部分の表示は固定しておいて、表を左右にスクロール可能なようにしてあげた方が間違えが少なくなるかと思います。 まぁ、個人の勝手な思いつきレベルの意見なので、参考にもならないとは思いますが・・・
お礼
ありがとうございます^^ ファン登録させていただきました^^ いろいろなアドバイスなど本当にありがとうございます^^ もしよろしければ、これからも、アドバイスお願いいたします^^ こんなにもお世話になっているので、完成したときや、進んだときなどに近況報告させていただいてもよろしいですか? そこでまたアドバイスなどいただけたら嬉しいです^^
お礼
またしても回答ありがとうございます^^ 本当に助かります^^ 他の言語(php)での方法では、少なからず時間の重複などの場合の制限やデータの保存などできているのですが、いかんせんユーザーインターフェースに乏しいもので^^; この方法と組み合わせたりなどして、作っていきたいと思っています。 何かいい方法があるなどの意見ありましたら、とても助かります^^; 本当にありがとうございます^^