javascript - 使用 Javascript 添加的 HTML 表单隐藏字段未发布

标签 javascript jquery html forms

我有一个表单,用户可以在其中输入链接,单击“添加链接”按钮,然后该链接(通过 jQuery)作为隐藏字段添加到表单中。问题是当我提交表单时它没有发布。这真的让我感到困惑。问题是,如果我将一个隐藏字段硬编码到表单中,它就会被发布,但我的功能由于某种原因无法正常工作。正如我在 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 添加到页面和按下提交按钮开始它并没有真正做任何事情。

最佳答案

如果数据没有被发布到服务器,输入元素肯定没有被添加到表单。

尝试在提交表单之前执行以下代码:

<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;
}

如果您没有得到您的字段,则“输入”不会添加到表单中,而是添加到其他地方。

如果你确实得到了这个领域......我们需要更深入地挖掘。

关于javascript - 使用 Javascript 添加的 HTML 表单隐藏字段未发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854640/

相关文章:

javascript - 找不到本地存储的json文件

php - 使用 jQuery 检查表单输入值的问题

jquery - 如果在 ajax 调用之后也需要调用它,如何避免重复代码?

javascript - 如何从数据库中保留段落分隔符和缩进?

html - WordPress - 自定义存档页面

javascript - 删除元素内的文本,仅保留子元素

javascript - 在 Bootstrap 中重新定位导航栏上的元素折叠

javascript - 返回函数的函数

javascript - jQuery 使用 .find() 方法获取具有不同类的 <table> 的内部 <tr>

php - 使用php使用图像代码在img标签中显示图像