我有一个表单,用户可以在其中输入链接,单击“添加链接”按钮,然后该链接(通过 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/