【发布时间】:2013-09-22 12:07:02
【问题描述】:
我正在尝试从我的 DNN (DotNetNuke) 站点中提交一个 mailchimp 表单。通常,您只需删除表单标签并在提交按钮的 onclick 事件中添加一些 javascript...like here。这有效,您可以看到here。
但是,我正在使用此弹出模块,因为我希望当有人访问该站点时弹出此表单。在这种配置中它不起作用。它会将表单提交到指定的 URL,但没有传递表单数据。这个页面是here。
几个观察:
- 当您查看页面源时,弹出表单在表单标签内,然而 this.form 在脚本中返回 null。
- 当您在 Chrome 中检查提交按钮元素时,您会看到 html 表单位于表单标签之外。
- 所以也许有一些带有这个弹出模块的 javascript 在页面加载时移动 DOM 元素???
我创建了一个js函数来调用输入按钮提交;代码如下:
function submitSubscription(clickedElement){
$form = $('body').find('form');
$form.attr('action', 'http://InciteResults.us2.list-manage1.com/subscribe/post?u=6d82b6a028c94cc75005eb4fe&id=1c7ceabac4');
$form.submit();
}
注意:在此函数中 clickedElement.form 返回 null。
【问题讨论】:
-
很可能弹出窗口将元素移动到表单之外。尝试将表单标签放在弹出窗口中,以便它们随输入一起移动。
-
感谢@KevinB,但这也不起作用。如果我这样做,并检查 clickedElement.form,它是空的。然后,当您单击该按钮时,没有任何反应,控制台中也不会产生任何错误。
-
我可以确认@KevinB 所说的。弹出窗口将元素移动到表单之外。用火狐或萤火虫检查,你会看到。您可以通过 ajax 发布或使用不会将元素移动到表单之外的其他弹出窗口,例如 Bootstrap Modal getbootstrap.com/2.3.2/javascript.html#modals
-
由于元素不在表单中呈现,您可以在标记中包含原始表单元素,而不使用 JavaScript 后备
-
@bdukes 是的,我也试过了......实际上我的配置,我在其中输入弹出窗口的 HTML,现在有
标签: javascript jquery dotnetnuke