【问题标题】:Any advantage of jquery .submit() vs jquery .click() if calling .post() in the event?如果在事件中调用 .post(),jquery .submit() 与 jquery .click() 有什么优势吗?
【发布时间】:2015-04-21 04:08:08
【问题描述】:

我有一个带有地址字段的模式窗口。我想了解是否需要在地址字段周围加上表单标签?

当我按下提交/保存按钮时,我正在调用 .post() 将地址发送到控制器,如果使用 Google 地图找到该地址,我会更新/保存地址并发回一些数据以填写地图。我也关闭了模态。如果找不到地址,我只会显示一条错误消息。

我真的需要一个 ajax.submit 并在字段周围加上一个表单标签吗? 它对我现在的情况有什么好处?

【问题讨论】:

  • 在表单上使用“提交”事件的主要原因是允许用户通过点击enter进行提交
  • 表单验证也会在提交时触发,但不会在点击时触发
  • 您可以在点击事件上触发验证。

标签: javascript jquery html ajax forms


【解决方案1】:

如果你没有表单标签,你不能只将序列化的表单对象作为参数传入,你必须手动创建数据对象传递给你的提交对象。

你可以在你的 ajax 参数中做 data: $("#formId").serialize()

【讨论】:

  • 哦,很有趣。我正在读取每个字段并将其放入 JSon 字符串中,然后将 JSon 字符串传递给控制器​​。也许这不是最好的方法??
  • 我认为这是或多或少的意见。这种方式可能比 JSON 更容易阅读
【解决方案2】:

如果你的 dom 中有一个典型的形式为

<form id="myform" action="/someUrl" method="post">
    <!-- some fields -->
    <input type="submit" id="submitButton" value="Submit" />
</form>

并且您向提交按钮添加一个点击事件,两者都会触发(首先是点击事件,然后是提交事件)。

在这种情况下,您需要执行以下操作以避免触发提交事件

$("#submitButton").on('click', function(event){
    event.preventDefault();
    //do necessary stuff.
}); 

请考虑,仅当用户在处理表单提交的元素中“单击”并且按下“输入”键时,该事件不会触发。

我更喜欢始终使用 FORM 标记,至少对我来说更具可读性并且它有一些优点。

例如,我认为要获取所有值,您应该执行以下操作:

没有表单标签:

$( "input, textarea, select" ).serialize();

带有表单标签:

 $("#myForm").serialize();

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 2013-01-24
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多