Javascriptでの入力補完機能の質問です

下記の条件に合う入力補完機能の作成法、または作成に役立つページを教えていただけたら助かります。
1.日本語もOKな入力補完機能。(「あ」と打ち込んだら「あいう」等複数入力候補を表示、選択したらその文字が入力される的な)
2.複数行のTextBox対応
3.複数回使用可能
→例)一つのTextBoxで、「あ」と打ち込み、選択候補「あいう」を選択して入力。
その後、改行して再び「あ」と打ち込み、選択候補「あいうえ」を選択ができる。
4.選択候補に半角スペースや改行などが使用可能。
suggest.jsでは上記の3に関してはうまく動きませんでした。
→一応複数行もできるのですが、
a)検索項目に半角スペースをいれると、
Suggest.LocalMulti.prototype.delim = ' '; // delimiter
こちらの設定により動きが怪しくなる。
b)上記のdelimの設定を変更しても、うまく動かない。(例えば一度選択項目選択後、複数改行を入れた後に文字を入力しても検索項目がでない」)という感じでうまく臨んだ処理ができませんでした。

回答の条件
  • 1人5回まで
  • 登録:2008/03/17 09:52:11
  • 終了:2008/03/24 09:55:02

回答(1件)

id:tukihatu No.1

牛乳先生(tukihatu)回答回数180ベストアンサー獲得回数322008/03/17 13:49:31

ポイント60pt

複数行の入力補完は聞いたことないので、出回ってはないんじゃないですかねぇ…

作ったことはないのでアドバイス的なことだけ…

まず、なぜ出来ないのか原因出し。

・サンプルは一行テキストボックスで複数行だと出来ないから複数行に問題がある。

・複数行の改行に対応していないのではないか。

・そもそも複数行と一行では仕様が違うから変える必要があるのではないか。一行の方はvalueだし。

etcetc…

その後は解決方法を。

この場合だと、上の原因出しの結果から、複数行はvalueじゃないからinnerHTMLで複数行のデータを習得して、入力した項目を割り出して、それに対してのみ入力補完をかければうまくいくんじゃないか、と推測します。

で、それに基づいて実行。

・ボックスのテキストをまず吸い出しておく(テキスト01)

・入力確定がされたら、またテキストを吸い出す(テキスト02)

・テキスト01と02を比較して、入力された文字を特定(テキスト03)

・テキスト03の位置から半角スペースか改行が出てくるところまでさかのぼり、そのデータを収得(テキスト04)

・テキスト04と03を合体(テキスト05)

・テキスト05に大してjsの命令を適応させる

・入力補完が押されたら、テキスト02に入っているテキスト05を置換え

・テキスト02をテキスト01に代入

・テキスト02をボックスに戻す

これで理論的にはできるはずです。

ただ理論的なので、付随する命令がない場合はいろいろ方向転換が必要かと思いますが…(入力確定の部分が複数行でもちゃんと収得できるか?とか)

おもいっきりはずしてたらすいません。

id:your

回答ありがとうございます。

ただ、残念なことに当方大変初心者でして、上記をみてもぱっとプログラムが思いつかないのが1点。

>・テキスト03の位置から半角スペースか改行が出てくるところまでさかのぼり、そのデータを収得(テキスト04)

また、ここの部分がネックになりそうだなぁ、と。(入力候補に設定予定の文字列には半角スペースや改行があるため)

他に何かよい代替案がありましたらよろしくお願いします。

2008/03/19 10:31:07
  • id:tukihatu
    >(入力候補に設定予定の文字列には半角スペースや改行があるため)
    とすると、どこで文字を区切ればいいのでしょうか…^^;
    半角スペースならまだしも改行までダメとなると、入力候補の開始地点が収得できないかと。

    また、おそらく中級以上レベルのものが必要になりそうです。
    (自分もできるかどうか曖昧なので><)
    すくなくともこの上のはてなの回答入力画面の”B”ボタンとか”I”ボタンとかの作り方がわからないと不可能でしょうね…

    自分の知識ではこれ以外の代案は思い浮かばないですが、おそらくinnerHTMLでのやり方しかなく、入力候補の開始地点収得のために+αで正規表現による判定とか、全文検索で一番最後に引っかかった登録文字に対して入力補完をかけるとかで、もう少し要件には近づけるかなと思います。

    また余談ですが、上で紹介しているものに対してコードを書いていくと、100行近くになりそうですね…
  • id:your
    ありがとうございます。大変助かりました。
    とりあえずチャレンジしてみてだめだったら、AJAXや、Javaの代替案を探ってみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません