[问题] 阻止 form 提交?

楼主: Gold740716 (项为之强)   2016-09-12 23:48:31
想用 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 提交的效果。
作者: Ayukawayen (亚布里艾尔发芽>//<)   2016-09-12 23:57:00
onsubmit里preventDefault & return false ?
作者: red0whale (red whale)   2016-09-13 03:54:00
preventDefault其实input不一定一定要在form里面,要用ajax提交资料,也不一定要用form包起来
作者: ssccg (23)   2016-09-13 09:22:00
其实那不是对一个id提交,而是本来html中网址没有写完整的时候,都会用现有网页的网址补完
作者: crossdunk (推嘘自如)   2016-09-13 11:10:00
return false就不会提交了我觉得用form的好处是可以直接用serialize
作者: bbcust (bbcust)   2016-09-13 12:00:00
form本身没有serialize吧 还是你是说jquery的serialize?
作者: tsao1211 (Sunday)   2016-09-13 12:13:00
可以把原本的submit button type设为button 侦测click event 然后再自己用js处理
作者: devil115789 (味噌汤好喝)   2016-09-13 15:20:00
楼上正解
作者: tsao1211 (Sunday)   2016-09-14 02:33:00
阻止enter提交可以在input 设 onkeypress = "return event.keycode != 13;"
作者: ssccg (23)   2016-09-14 03:12:00
前两楼不是都说了就是在onsubmit里面做,不管是用什么方法提交包括button、enter、script submit都会截取到啊..有必要再找别的方法?
作者: osk2 (.)(.)   2016-09-14 07:38:00
一楼正解啊

Links booklink

Contact Us: admin [ a t ] ucptt.com