javascript - jQuery中,监听表单提交事件,此时可以不阻止默认行为,直接进行操作吗?希望得到大家的帮助
ringa_lee
ringa_lee 2017-04-11 10:14:58
0
1
536

背景:

页面有多个表单,我需要在提交每个表单的时候,将其对应的id属性存入cookie中。使用1.9.1版本的jQuery,现在我需要监听页面表单的提交事件。

此时能不能这样:

  1. 直接监听事件,回调函数为设置cookie的操作。这样是否安全呢?跳转是否先于事件完成呢?中间的过程不是很清晰,希望得到大家的帮助。

  2. 或者是必须要取消浏览器的默认跳转,在回调函数的内部末尾通过location.href进行跳转呢?

对于这些有些纠结,很希望得到大家的帮助

ringa_lee
ringa_lee

ringa_lee

reply all(1)
迷茫

可以直接写 cookie,你想:阻止默认事件行为也是要写在回调函数里的,如果无法保证先于默认行为执行,怎么能保证阻止成功呢?

但是回调函数里的异步处理操作是无法保证的,写 cookie 则不在此例。

顺便一提,如果用户禁用了 cookie 怎么办?(虽然很罕见)我觉得更好的办法是在提交时往 URL 上拼接一个 query params(比如你的 ID),通过监听 location 的变化来处理这件事情。这也是现代 JavaScript 应用程序客户端路由常用的方式。

又或者表单的提交改为 Ajax 请求,直接禁用默认的提交事件,此时页面是不会刷新的,你可以保证在提交成功之后记录表单 ID,这样会更健壮一些。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template