#jquery
#jquery
Вопрос:
Я использую плагин jQuery (tag-it), который генерирует поле ввода формы:
function create_choice (value){
var el = "";
el = "<li class="tagit-choice">n";
el = value "n";
el = "<a class="closetag">x</a>n";
el = "<input type="hidden" style="display:none;" value="" value "" name="item[tags][]">n";
el = "</li>n";
var li_search_tags = this.tag_input.parent();
$(el).insertBefore (li_search_tags);
this.tag_input.val("");
}
К полю ввода, сгенерированному вышеупомянутой функцией, можно получить доступ в HTML-форме следующим образом:
<ul id="mytags"></ul>
Я могу получить доступ к массиву тегов, отправив форму с помощью PHP, например:
$tags = $_POST['item']['tags'];
Могу ли я получить приведенный выше массив без $ _POST, используя jQuery .val() или какой-либо другой метод? Спасибо.
Комментарии:
1. Вы спрашиваете, можете ли вы использовать jQuery в PHP-коде на стороне сервера?
2. @Norman H: Я просто хочу опубликовать эти данные массива с помощью плагина uploadify, который в основном принимает входные данные формы с
.val()
3. Итак, ваш вопрос на самом деле не имеет ничего общего с PHP
$_POST
… вы просто хотите получить значение или состояние различных скрытых<input />
полей. Да?4. @Tomalak Geret’kal Извините, если мой вопрос неясен. Я хочу ОПУБЛИКОВАТЬ данные формы с помощью скрипта uploadify, который получает значения полей формы, подобные
$('#name').val()
. Но я использую этот плагин тегов, который имеет скрытый ввод, поэтому мне трудно восстановить скрытое значение и опубликовать в uploadify. Я буду очень благодарен, если вы сможете помочь с этим.5.
hidden
поля по-прежнему являются частью формы. Если плагин не включает их значения вPOST
запрос, значит, в нем ошибка. Вам следует связаться с авторами. (Кстати, я не знаю, зачем вы принудительноdisplay: none
используете CSS;type="hidden"
входные данные уже невидимы).
Ответ №1:
var elems = $('input[name="item[tags][]"]');
var array = new Array();
for (var i = 0; i < elems.length; i ) {
array.push($(elems[i]).val());
}
Ответ №2:
Для извлечения тегов на клиенте вы можете выполнить:
var tags = [];
$('li.tagit-choice > input[type=hidden]').each( function() {
tags.push( $(this).val() );
});
Или, если — как вы прокомментировали — вам просто нужно сериализовать значения из формы.
$('form').serialize();
тоже работает.
Ответ №3:
serializeArray(), похоже, предназначен для того, что вы хотите сделать.
http://api.jquery.com/serializeArray/
РЕДАКТИРОВАТЬ: Хорошо, вы можете использовать serializeArray(), но требуется немного больше кода:
$.map($('#test').serializeArray(), function (n) {
if (n.name == 'item[tags][]') {
return n.value;
}
});
Комментарии:
1. serializeArray не получит значения элементов. Это просто поместит объекты в массив.