2009-08-12 3 views
0

Я реализую автоматическую полную коробку, используя метод Ajax.autocompleter рамки scriptaculous.js.Как передать массив как скрытое поле?

Это поле автозаполнения и поле, в котором заселяются автоматически предлагаемые записи.

<?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');?> 

Это функция 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 на той же странице? Зачем использовать два JS Framework на одном сайте? Недостаточно ли одного? –

+0

ранее закодирован с использованием jquery .. и для реализации функции автообновления требуется сценарийная структура – Angeline

ответ

0

Просто создайте новый скрытое поле ввода для каждого выбранного ID, и убедитесь, что для каждый есть name="sharedUserId[]". Это не соответствует соглашению об именовании элементов формы CakePHP, но оно будет гарантировать, что значение POSTED sharedUserId является массивом.

0

сериализуйте с помощью json и проанализируйте его на сервере. PHP 5.2 может анализировать json изначально.