我有一个表单,用户可以在其中输入链接,单击“添加链接”按钮,然后(通过jQuery)将该链接作为隐藏字段添加到表单中。问题是,当我提交表单时,它不是POSTing。这真的开始让我感到困惑了。问题是,如果我将一个隐藏字段硬编码到表单中,它会被posted,但我的函数由于某种原因无法工作。隐藏字段确实被添加到我的表单中,正如我在Firebug中看到的那样,但它只是没有与POST数据一起发送。
需要注意的是,我在Javascript中使用了一个数组来保存元素,直到表单被提交,它还会以可见的方式发布这些元素,让用户看到他们添加了什么。我在元素的"name“字段上使用[]表示法,因为我希望将链接提供给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添加到页面并按下submit按钮之后,它实际上并没有做任何事情。
发布于 2010-05-20 01:22:08
我刚发现问题出在哪里。我既尴尬又困惑。如上所述,我正在使用Kohana框架。我不确定这与此有什么关系,但它可能很重要。
我将我的元素按如下顺序排列:
<table>
<form>
.............form stuff.......
</form>
</table>在提交表单时,它不允许我添加的数据加入POST数组,即使使用Kohana的form类进行“硬编码”的元素工作得很好。我只是注意到在整个分支之前出现了。我希望确保在我的Kohana视图中有一个Form::close,但从来没有想到它会紧跟在开始标记之后。
非常感谢你的帮助。这是其中一个没有意义的bug,但我想这也是为什么$.append之前不能工作的原因。我总是观察并看到它直接附加在与POST数据一起发送的其他标记旁边,因此假设所有这些都发生在表单内部。
谁能解释一下为什么需要封装而不是反之亦然,以便HTML正确地呈现它?或者这更有可能是Kohana的问题?
非常感谢每个人的帮助,这是一个很好的(但非常令人沮丧的)教训。
发布于 2010-05-18 13:23:41
如果数据没有发送到服务器,那么输入元素肯定不会添加到表单中。
在表单提交前尝试执行以下代码:
<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;
}如果你没有得到你的字段,那么“输入”就不会被添加到表单中,而是被添加到其他地方。
如果你真的得到了这个领域...我们需要更深入地挖掘。
发布于 2010-05-18 13:13:54
亲爱的使用jquery的插件动态添加html dom元素,什么是#link_td ??
https://stackoverflow.com/questions/2854640
复制相似问题