表单提交是刚开始学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异步提交。但是了解一些还是好的。。。
下面是用js动态创建form然后进行post提交的方式,参数url是表单提交的去向,参数params是给去向传递的参数(JSON结构),参数target设置何处打开链接文档(可选):function postcall( url, params, target){
var tempform = document.createElement("form")
tempform.action = url
tempform.method = "post"
tempform.style.display="none"
if(target) {
tempform.target = target
}
for (var x in params) {
var opt = document.createElement("input")
opt.name = x
opt.value = params[x]
tempform.appendChild(opt)
}
var opt = document.createElement("input")
opt.type = "submit"
tempform.appendChild(opt)
document.body.appendChild(tempform)
tempform.submit()
document.body.removeChild(tempform)
}
哦,你多次表示,指的是一个表单提交了一些按钮,一个按钮的每次点击,提交表单,并提交不同的页面呢?如果是这样,有一种方法,以达到良好的,那就是使用JavaScript来提交!每个按钮的类型设置按钮,然后写的onclick
=“submit1”事件。例如,要设置窗体的id
=
MyForm的,然后在功能submit1触发()和写myform.action
=“路径”
myform.method
=“后”
myform.submit()根据其他人也想要写,刚读相应的URL的myform.action。