【问题标题】:Embedded Form Submit Event嵌入式表单提交事件
【发布时间】:2017-02-21 16:39:15
【问题描述】:

我试图在提交嵌入表单时触发一个函数。该表单是使用 javascript 嵌入的。我尝试使用通用调用来定位表单,即

$('form').submit(function(){
    alert();
});

这不起作用。我还尝试使用$('#submit_button').on('click', function(){}); 定位嵌入式提交按钮,但也不起作用。

这可能吗?

这个表单正在加载这个嵌入sn-p。

<!-- SharpSpring Form for XXX  -->
<script type="text/javascript">
var ss_form = {'account': 'XXX', 'formID':'XXXX'};
ss_form.width = '100%';
ss_form.height = '1000';
ss_form.domain = 'XXXXXX';
// ss_form.hidden = {'Company': 'XXXX'}; 
</script>
<script type="text/javascript" src="https://external-form.js?ver=1.1.1"></script>
<script type="text/javascript">
var __ss_noform = __ss_noform || [];
__ss_noform.push(['baseURI', 'https://']);
__ss_noform.push(['endpoint', '00000-000-0O0O0-000-000OOO00O']);
</script>

如果我通过控制台运行这个 JS

$('form').submit(function(){
    alert();
});

我会在提交表单时收到警报,它只是不会使用该代码触发事件。

【问题讨论】:

  • 您确实在此代码之前引用了 JQuery,对吗?而且,语句末尾的最后一个字符应该是半彩色 (;),而不是彩色 (:)。
  • submit 方法调用的末尾仍然有一个冒号。这是不正确的。
  • 已修复。感谢您了解这一点。
  • 您实际上并未显示表单的添加位置。如果我查看koi-724ki.sharpspring.com/client/form.js?ver=1.1.1,似乎它 document.write 将表单写入 iframe。您应该在 Chrome 中“检查元素”并查看表单的实际位置以及它已经设置的事件处理程序是什么样的

标签: javascript jquery sharpspring


【解决方案1】:

很高兴看到一些 HTML

  1. 如果表单在事件处理程序之后加载,例如使用 AJAX,则需要委托:

    $(document).on("submit","form",function(){

  2. 如果表单有任何命名为 submit(名称或 ID),那么您需要重命名它们

【讨论】:

    【解决方案2】:

    您的代码根本没有嵌入 HTML 表单,因此从未触发过提交事件。

    这个:

    <!-- SharpSpring Form for XXX  -->
    <script type="text/javascript">
      var ss_form = {'account': 'XXX', 'formID':'XXXX'};
      ss_form.width = '100%';
      ss_form.height = '1000';
      ss_form.domain = 'XXXXXX';
      // ss_form.hidden = {'Company': 'XXXX'}; 
    </script>
    

    声明一个名为ss_form 的变量,其值为标准JavaScript 对象。它们会在该对象上创建新属性。

    这个:

    <script type="text/javascript">
      var __ss_noform = __ss_noform || [];
      __ss_noform.push(['baseURI', 'https://']);
      __ss_noform.push(['endpoint', '00000-000-0O0O0-000-000OOO00O']);
    </script>
    

    尝试将名为 __ss_noform 的变量设置为名为 __ss_noform 的变量或常规 JavaScript 数组。

    然后它用另一个数组填充对象或数组。

    要制作可以提交的表单,您需要一个实际的 HTML &lt;form&gt; 元素(可以是硬编码或动态创建的)。该元素还需要设置其actionmethod 属性。

    当然,如果您使用的是 JQuery,则必须在代码之前引用 JQuery。

    这是一个示例,此代码在 Stack Overflow sn-p 环境中不起作用,因为不允许提交,但您可以看到一个工作版本 here

    $('form').submit(function(){
        alert();
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form>
    
      <input type="submit">
    </form>

    【讨论】:

    • 请向 META 投诉提交沙盒问题。真的很烦
    • @mplungjan 我从未真正使用过 META 网站。能给个链接吗?
    • 是的,这里的代码只是一个错字。我为这个问题重新编写了代码,而不是复制和粘贴。是的,我正在引用 jQuery。我没有收到任何错误,只是无法在提交时触发事件。感谢您的回复。
    • @JuanRangel 正如您在我的 Fiddle 中看到的,这就是使代码工作所需的全部内容。如果它仍然无法正常工作,那么一定是因为您没有向我们展示您拥有的其他代码。
    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多