HTML-поля, скрытые поля добавлены с Javascript не POSTing - PullRequest
11 голосов
/ 18 мая 2010

У меня есть форма, где пользователь может ввести ссылку, нажать кнопку «добавить ссылку», и эта ссылка затем (через jQuery) добавляется в форму как скрытое поле. Проблема в том, что это не POSTing, когда я отправляю форму. Это действительно начинает меня смущать. Дело в том, что если я жестко закодирую скрытое поле в форме, оно публикуется, но по какой-то причине моя функция не работает. Скрытое поле ДОЛЖНО быть добавлено в мою форму, как я вижу в Firebug, но оно просто не отправляется с данными POST.

Просто чтобы заметить, я использую массив в Javascript для хранения элементов до отправки формы, который также публикует их визуально, чтобы пользователь мог видеть, что они добавили. Я использую нотацию [] в поле «имя» элемента, потому что я хочу, чтобы ссылки передавались в массив в PHP.

Вот создание ссылки, которая добавляется в мою форму:

        function make_hidden_element_tag(item_type, item_content, item_id)
{
    return '<input type="hidden" name="' + item_type + '[]" id="hidden_link_' + item_id + '" value="' + item_content + '"/>';

У кого-нибудь есть идея, почему это может быть не публикация. Как указано выше, любые жестко закодированные теги, которые почти идентичны вышеприведенным, работают нормально, просто этот тег не работает. Вот как я добавляю тег в форму с помощью jQUery:

$('#link_td').append( make_hidden_element_tag('links', link, link_array.length - 1));

Я использую фреймворк Kohana 3, хотя я не уверен, что это имеет какое-либо отношение к этому, потому что на самом деле он ничего не делает с момента добавления HTML-кода на страницу и нажатия кнопки отправки.

Ответы [ 3 ]

5 голосов
/ 18 мая 2010

Если данные не публикуются на сервере, элемент ввода определенно не добавляется в форму.

Попробуйте выполнить следующий фрагмент кода перед отправкой формы:

<form onsubmit="return doBeforeSubmit(this);"> ... </form>

И функция ...

* +1007 *

Если вы не получили свое поле, то «вход» добавляется не в форму, а в другое место.

Если вы получите поле ... нам нужно копать глубже.

2 голосов
/ 19 мая 2010

Я только что понял, в чем проблема. Я смущен и смущен. Как уже говорилось, я использую Kohana Framework. Не уверен, что это как-то связано с этим, но это может быть важно.

У меня были элементы в следующем порядке:

<table>
    <form>
       .............form stuff.......
    </form>
</table>

и это не позволяло моим добавленным данным присоединяться к массиву POST при отправке формы, даже если элементы, которые были «жестко запрограммированы» с помощью класса FORM Коханы, работали нормально. Я только заметил, что это было перед всей веткой. Я пытался убедиться, что у меня есть форма Form :: close в моем представлении Kohana, но я никогда не думал, что он закрывается сразу после открывающего тега.

Большое спасибо за помощь. Это одна из тех ошибок, которые просто не имели смысла, но я думаю, в этом есть смысл, почему $ .append раньше не работал. Я всегда смотрел и видел, что он добавлялся прямо рядом с другими тегами, которые БЫЛИ отправлены с данными POST, и поэтому предполагал, что все это происходит внутри ФОРМЫ.

Может кто-нибудь объяснить, почему необходимо инкапсулировать, а не наоборот, чтобы HTML правильно отображал его? Или это скорее проблема Кохана?

Большое спасибо всем за помощь, это был хороший (но крайне разочаровывающий) урок.

2 голосов
/ 18 мая 2010

Уважаемый, используйте плагин jquery для динамического добавления html-элементов dom, что такое #link_td ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...