【问题标题】:Create a handler for myform.submit() which works from a button click为 myform.submit() 创建一个处理程序,通过单击按钮工作
【发布时间】:2011-05-05 19:01:19
【问题描述】:

由于某种原因,这两种情况下的提交事件不同。请帮助理解为什么。这是一个带有提交和按钮的表单。单击提交并触发警报,单击按钮并不会触发警报。表单元素有什么不同?如何使两者工作相同?顺便说一句:我正在 Chrome 中进行测试。这需要适用于所有支持myform.submit(); 的浏览器。

<FORM id="myform" action="saveform.asp" method="post">
<input type="hidden" name="my_val" value="" />
<INPUT id="button" value="Save Button" class="save-submit" type=button >
<INPUT id="button" value="Save Submit" class="save-submit-hidden" type=submit>
</FORM>
<script language=javascript>


        $("form").submit(function() {
            alert('submitting');
            return false;
        });


    $('.save-submit').click(function() {
        myform.submit();
    });
</script>

【问题讨论】:

  • 首先,您的 HTML 存在许多问题。所有表单元素都应该有一个名称,并且页面上不应有 2 个具有相同 ID 的元素。
  • 另外,你所有的属性都应该被引用。 type="button"type="submit".

标签: jquery ajax dom cross-browser jquery-events


【解决方案1】:
myform.submit();

应该是

$(myform).submit();

它对我有用。

编辑:

这似乎是 jQuery 中的一个错误功能:jQuery override form submit not working when submit called by javascript on a element

【讨论】:

  • 这也适用于我,但我试图理解为什么它没有捕捉到其他事件。
  • 没有$,你调用的是javascript的提交函数,而不是jQuery的。这可能是 jQuery 中的错误/错误功能,但看起来当您以这种方式提交时,它绕过了正常的提交事件。但是当您实际单击提交按钮(或使用 jQuery 提交表单)时,jQuery 会正常接收事件并正确调用您的其他处理程序。
  • 是的,请参阅stackoverflow.com/questions/142000/…。找不到它的 jQuery 错误报告。
  • 不应该是$('#myform').submit();吗?
  • @Rocket:我一开始就是这样。我以为myform 将是一个未定义的变量,但显然HTML 中的每个id 都会自动创建一个JS 变量?无论如何,我想我会做出最小的改变,这样你就会发现差异。
【解决方案2】:

只需删除所有的 javascript。在表单上单击 type=submit 的输入会导致它提交,不需要 javascript。除非您每次提交表单时都需要运行一些 javascript(无论它是如何提交的),在这种情况下使用您的 $("form").submit 函数并删除 $('.save-submit')。点击功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多