表单提交是刚开始学js的朋友很迷惑的一个问题,怎么提交,怎么阻止默认提交,怎么提交表单不跳转等等问题,下面是一些示例
原始的表单提交有 button 按钮提交和 <input />类型的。它们又什么区别呢?
(1) 默认表单提交
(2)默认不会提交表单
(3) 如果在 form ,我们使用了 type=''submit 属性,但是不让表单默认提交,有什么办法呢?看下面
(4) 如果在 form ,我们使用了 type=''button 属性,但是还是需要提交表单,这是可以使用ajax来提交,好处是可以自己控制提交,并且页面不会跳转
(5)若是使用默认提交的方法,且提交之前验证表单,方法看下面
(6) 若是使用了 type='button' 属性,但是还是想实现默认提交的方式怎么办? 看下面
(7) 下面的提交会发生什么?
分析 : 点击提交按钮:
(1)当表单验证失败时,不会触发 form.submit() 函数,所以可以触发 <form>的 onsubmit 句柄,又因为该句柄 return false 所以表单不会从该句柄处默认提交,所以 会在控制台打印出 表单的onsubmit事件句柄在form.submit()调用时失效'
(2)当表单验证成功时,会触发 form.submit() 函数提交表单,又因为 form.submit()提交表单的方式与用户单击 Submit 按钮一样,但是表单的 onsubmit 事件句柄不会被调用,所以 控制台不会打印出 表单的onsubmit事件句柄在form.submit()调用时失效
现在表单默认提交的方式基本没人用了,都是ajax异步提交。但是了解一些还是好的。。。
好像你真的很懂了!呵呵!!document.forms[0]这本身就是得到一个表单,是得到所有的表单forms中的第一个表单!!但是你的提交是提交到了服务器端!所以所有的表单都会一同提交!!即使你用id和这样的效果也是一样的!!!唯一的区别就是,你提交了,在服务器端得值得的时候,只得你想要提交的那个表单的值就可以了啊!!js提交和submit按钮提交的区别:1. js提交表单时不会带上 submit 按钮的值(因为没有被单击) 所有浏览器
2. input 回车提交 w3c浏览器会带上submit按钮的值,ie6则不会带
解决办法:
增加一个hidden域,用这个来判断,无论用哪种方式提交都会有值
submit按钮上绑定提交事件:
即:<input type="submit" name="btn" value="btn" onclick="test()" />
都会带上submit的值, 用js提交都检测不到onsubmit状态
w3c: 提交一次
ie6: 分两次提交,先js在form提交
解决办法:
如果按钮为submit则 检测时用onsubmit事件检测
如果按钮为button,则检测通过后在触发submit事件
一定不要用js提交表单,然后又用onsubmit去检测
单纯的用js提交表单, alert, ff下阻塞表单的提交,而其他浏览