【问题标题】:Submit Form in DNN, typical answer not working在 DNN 中提交表单,典型答案不起作用
【发布时间】:2013-09-22 12:07:02
【问题描述】:

我正在尝试从我的 DNN (DotNetNuke) 站点中提交一个 mailchimp 表单。通常,您只需删除表单标签并在提交按钮的 onclick 事件中添加一些 javascript...like here。这有效,您可以看到here

但是,我正在使用此弹出模块,因为我希望当有人访问该站点时弹出此表单。在这种配置中它不起作用。它会将表单提交到指定的 URL,但没有传递表单数据。这个页面是here

几个观察:

  1. 当您查看页面源时,弹出表单在表单标签内,然而 this.form 在脚本中返回 null。
  2. 当您在 Chrome 中检查提交按钮元素时,您会看到 html 表单位于表单标签之外。
  3. 所以也许有一些带有这个弹出模块的 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


【解决方案1】:

因为您的内容不在<form> 中,所以您要将其放在<form> 中,以便您的脚本能够正常工作。您可以动态创建<form> 元素,或者在提交时将内容移回主<form> 中。试试这样的:

function submitSubscription(clickedElement){
    var $form = $('<form></form>', { action: 'http://InciteResults.us2.list-manage1.com/subscribe/post?u=6d82b6a028c94cc75005eb4fe&amp;id=1c7ceabac4' });
    $('#mc_embed_signup').wrap($form);
    $form.submit();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多