【问题标题】:.submit in javascript vs .submit in jquery.submit 在 javascript 中与 .submit 在 jquery 中
【发布时间】:2014-11-28 12:06:21
【问题描述】:

我在页面上有一个表格。当用户单击表单标签之外的提交按钮时,我想提交表单。当我使用 $('#theform').submit() 时,提交方法可以完美运行,但是当我这样做时 document.getElementById('theform').submit() ,它只会刷新我的页面。

Fiddle

JavaScript

$(function() {
    $('input[type="submit"]').click(function() {
        //$('#theform').submit()
        document.getElementById('theform').submit()
    })

    $('#theform').submit(function(e) {
        alert(0)
        e.preventDefault()
    })
})

html

<form id="theform">
    <input type="text"  id="fname" />
    <input type="text"  id="lname" />
    <input type="text"  id="country" />
</form>
<input type="submit" />

【问题讨论】:

  • 您的表单中没有包含任何操作,它应该如何提交?
  • submit() DOM 节点方法不会触发 jQuery submit 处理程序,这就是原因

标签: javascript jquery html forms


【解决方案1】:

DOM submit() 方法不会触发提交事件,因为 jQuery's does. 这就是 your form 在 javascript 中的原因 document.getElementById('theform').submit() 将提交 FORM

你可以在这里看到一个帖子:Jquery submit vs. javascript submit

【讨论】:

    【解决方案2】:

    使用document.forms["theform"].submit();

    并在表单中定义操作

    <form id="theform" action="submit-form.php">
    

    【讨论】:

    • document.forms["theform"] 将返回完全document.getElementById("theform") 相同的 DOM 元素。无论如何,getElementById 是 *preferred` 而不是 forms[]
    • 关键是定义一个动作,阿米特看到的是同一个页面,因为他的HTML在FORM标签中没有动作。 Adnan 考虑编辑你的回复,这里获取 DOM 元素的方式不是问题。
    猜你喜欢
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多