※最近Qiitaでも似たようなのを見かけましたが、Typeaheadを利用したかったので1から作りました
テキストに2文字以上の入力を行ったら、サーバーから対象のメールアドレスを取得してTypeaheadに表示。一覧から選択されたら、枠で囲って表示するしテキストボックス上にあたかも表示されているように見せます。
実際のDemoはこちら
//レスポンス $response = array(); //検索文字列パラメータ $searchStr=@$_GET["q"]; if($searchStr!=""){ //メールアドレス一覧 $mails[]="test1@yoshi.com"; $mails[]="sample1@yoshi.com"; $mails[]="dummy1@yoshi.com"; $mails[]="test2@yoshi.com"; $mails[]="sample2@yoshi.com"; $mails[]="dummy2@yoshi.com"; $mails[]="test3@yoshi.com"; $mails[]="sample3@yoshi.com"; $mails[]="dummy3@yoshi.com"; //検索文字列が含まれているアドレスを戻す foreach ($mails as $mail) { if(strpos($mail,$searchStr)!==false){ $response[]=$mail; } } } //json形式で戻す echo json_encode($response);サーバー側では、GETパラメータの文字列が含まれているメールアドレスを抽出して、JSON形式で戻します。
Typeaheadでは、optionであるsourceにfunctionをセットすることで動的に一覧の値を変更する事が可能です。通常動作では一覧から選択したタイミングで対象のテキストボックスに値が入ってきます。今回は選択したタイミングで枠で囲って表示するため、changeイベントで処理を行っています。Typeahead MailInput Sample Typeahead MailInput Sample
※ul liのクリックイベントはbootstrap側でキャンセルされてしまうので、changeイベントで行っています。
以前、Bootstrapのソースを解析しましたので、こちらも参考にしてください。
また上記のソースコードはこちら
0 件のコメント:
コメントを投稿