HTML-форма HIdden Fields добавлена ​​с Javascript, а не POSTing

У меня есть форма, в которой пользователь может ввести ссылку, нажать кнопку "добавить ссылку", и эта ссылка затем (через 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 на страницу и нажатия кнопки отправки.

Ответ 1

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

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

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

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

Большое спасибо за помощь. Это одна из тех ошибок, которые просто не имеют смысла, но я думаю, что это имеет смысл, почему $.append не работал раньше. Я всегда смотрел и видел, как он добавляется непосредственно рядом с другими тегами, которые были отправлены с данными POST, и предположил, что все это происходит внутри FORM.

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

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

Ответ 2

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

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

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

И функция...

function doBeforeSubmit(form)
{
   var es = form.elements;
   var l = es.length;

   var msgs = [];

   for(var idx = 0; idx < l; idx++)
   {
      var e = es[idx];
      msgs.push('name=' + e.name + ', type=' + e.type + ', value=' + e.value;
   }

   alert(msgs.join('\n'));
   return false;
}

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

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

Ответ 3

Дорогое использование плагина jquery для динамического добавления элементов html dom, что такое #link_td??