2009-08-12 3 views
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); 
} 

複数のエントリを選択した場合、その値を送信するとしますか? 私は選択された要素の配列を持つことができ、その配列を隠しフィールドとして保存できるように、配列を隠しフィールドとして使用できますか?しかし、あなたの質問に関連していない

+0

質問には関係ありませんが、同じページでscriptaculous + prototypeとjQueryの両方を使用していますか?同じWebサイトで2つのJS Frameworkを使用するのはなぜですか? 1つでは不十分ですか? –

+0

は以前はjquery ..を使ってコード化されていましたが、自動完全機能を実装するには、scriptaculousフレームワークが必要でした – Angeline

答えて

0

を完了それぞれあなたはname="sharedUserId[]"です。これはCakePHPフォーム要素の命名規則には従いませんが、POSTされた値sharedUserIdが配列であることを確認します。

0

jsonでシリアライズし、サーバーのバックで解析します。 PHP 5.2ではjsonをネイティブに解析できます。

関連する問題