作者Gold740716 (项为之强)
看板Web_Design
标题[问题] 阻止 form 提交?
时间Mon Sep 12 23:48:31 2016
想用 js 处理输入输出,
做一个像表单的东西。
但其实不实际用 form 的提交功能,
只用 js 处理後回应,
或 ajax 向 server 发 request 回应。
如果用 form 标签,
就会向 action="url" 的 url 发出请求,刷新页面。
但我不想要刷新,
想要留在同一个页面。
刚查到一个技巧是把 action="
#formSubmit" ,
提交到一个 id ,(甚至也可以是不存在的 id 。)
然後用 hashChange 来侦测。
但这样会不会有什麽问题?
因为从网址来看应该还是要发出如下请求:
GET
http://domain.name/path/file.html#formSubmit?a=true&b=false
只是因为浏览器的实作上,
连到同一个页面不同 id 不会重新请求。
而且 *提交到一个 id* 也太诡异了 = =|||
要用 post 还是 get ?
## 无关紧要 ###########################
另外我觉得要用 form 有二理由。
1. 语意化,这就是个表单,就该用 form 包起来。
而且不在 form 里的 input 不会很奇怪吗?
2. 这不是那麽重要了。
当初我想侦测 enter 输入,又不想用 keyboard event 。
後来想到用 form 按 enter 会预设提交,
但提交又会刷新,不太好。
後来是把 input 改成 textarea ,
侦测最後一个字元。
达到类似 enter 提交的效果。
--
不要哭。要知道值得你哭的人,不会让你哭。
别骗人。因为会被你骗的,都是相信你的人。
不要去追。人家神隐,就是不想看见你。
不用和事。当事人吵架,就是想战。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.165.150
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1473695320.A.D00.html
1F:推 Ayukawayen: onsubmit里preventDefault & return false ? 09/12 23:57
2F:推 red0whale: preventDefault 09/13 03:54
3F:推 red0whale: 其实input不一定一定要在form里面,要用ajax提交资料, 09/13 03:56
4F:→ red0whale: 也不一定要用form包起来 09/13 03:56
5F:→ ssccg: 其实那不是对一个id提交,而是本来html中网址没有写完整的 09/13 09:22
6F:→ ssccg: 时候,都会用现有网页的网址补完 09/13 09:29
7F:推 crossdunk: return false就不会提交了 09/13 11:10
8F:→ crossdunk: 我觉得用form的好处是可以直接用serialize 09/13 11:12
9F:→ bbcust: form本身没有serialize吧 还是你是说jquery的serialize? 09/13 12:00
10F:推 tsao1211: 可以把原本的submit button type设为button 侦测click e 09/13 12:13
11F:→ tsao1211: vent 然後再自己用js处理 09/13 12:13
12F:推 devil115789: 楼上正解 09/13 15:20
因为如果在 form 里按了 Enter ,
不少浏览器会『自动提交』。
※ 编辑: Gold740716 (140.116.165.150), 09/13/2016 21:36:18
13F:推 tsao1211: 阻止enter提交可以在input 设 onkeypress = "return eve 09/14 02:33
14F:→ tsao1211: nt.keycode != 13;" 09/14 02:33
15F:→ ssccg: 前两楼不是都说了就是在onsubmit里面做,不管是用什麽方法 09/14 03:12
16F:→ ssccg: 提交包括button、enter、script submit都会截取到啊.. 09/14 03:13
17F:→ ssccg: 有必要再找别的方法? 09/14 03:13
18F:推 osk2: 一楼正解啊 09/14 07:38