0

scriptaculous.js フレームワークの Ajax.autocompleter メソッドを使用してオート コンプリート ボックスを実装しています。

これはオートコンプリート ボックスであり、自動提案されたエントリが入力される div です。

<?php echo $form->create('Share', array('url' => '/forms/share')); ?>
    <label for="shareWith">Share Form with</label>
    <input type="text" id="autocomplete" name="autocomplete_parameter"/>
    <div id="autocomplete_choices" class="autocomplete"></div>
    <input type="hidden" id="sharedUserId" name="sharedUserId"/>
<?php echo $form->end('Share');?>

これは、自動提案されたリストを取得し、フォームの非表示フィールドに格納されている選択されたエントリの ID を取得する JQuery 関数です。

new Ajax.Autocompleter("autocomplete", "autocomplete_choices",
                       "http://localhost/FormBuilder/forms/autoComplete",
                           {  
                            tokens: ',',
                           afterUpdateElement : getSelectedId
                           }
                       );

function getSelectedId(text, li) {
        $("#sharedUserId").val(li.id);
}

複数のエントリを選択した場合、それらの値を送信する方法は? 選択した要素の配列を取得し、その配列を非表示フィールドとして保存できるように、配列を非表示フィールドとして使用できますか?

4

3 に答える 3

0

選択した ID ごとに新しい非表示の入力フィールドを作成し、それぞれにname="sharedUserId[]". これは、CakePHP フォーム要素の命名規則には従いませんが、POST された値がsharedUserId配列であることを確認します。

于 2009-08-17T15:44:43.390 に答える
0

json でシリアル化し、サーバーで解析します。PHP 5.2 は、json をネイティブに解析できます。

于 2009-08-29T03:24:53.647 に答える
-1

しかし、あなたの質問とは関係ありません。

http://docs.jquery.com/Plugins/Autocomplete

  • jQueryオートコンプリート
于 2009-08-13T09:04:28.013 に答える