js验证阻止表单提交(表单绑定onsubmit事件)

原始方式:

<form action="http://www.cnblogs.com/zixueit/" οnsubmit="return check()">
    <input type="submit" value="提交" />
</form>
 
<script type="text/javascript">
    function check(){
        if(!confirm('确定?')){
            return false;
        }
    }
</script>

 

大多数情况我们需要行为和结构分离,所以我们在html代码中加onclick代码是不合适的,解决方案:

//dom0级事件绑定
<form action="http://www.cnblogs.com/zixueit/">
    <input type="submit" value="提交" />
</form>
 
<script type="text/javascript">
        onload = function(){
            myform = document.getElementsByTagName('form')[0];
        myform.οnsubmit= function(){
        if(!confirm('你确定?')){
            return false;
        }
        }
        }
</script> 

  

再看看dom2级事件绑定:

myform = document.getElementsByTagName('form')[0];
    if (myform.addEventListener) {  
        myform.addEventListener('submit', check, false);  
    }  
    else {//for ie  
        myform.attachEvent("onsubmit", check);  
    } 
     
    function check(){
        if(!confirm('确定?')){
            return false;
        }
    }  

  

但是我们测试的时候我们会发现IE下能够阻止表单提交,但是FF、chrome等浏览器并不能阻止表单提交

原因是:Object EventListener:This is an ECMAScript function reference. This method has no return value. The parameter is a Event object.

可见,listener是没有返回值的(写了也不会认),因此我们的check函数的返回值是不起作用的。

 

解决方案:

function check(ev) {  
    if (!confirm('确定?')) {//验证出错的情况just a demo  
        ev = ev || window.event; // Event对象  
            if (ev.preventDefault) { // 标准浏览器  
                    ev.preventDefault();  
            } else { // IE浏览器  
                    window.event.returnValue = false;  
            }  
    }  
}

  

 

 

转载于:https://www.cnblogs.com/zixueit/p/3844864.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值