onsubmit对表单的拦截

今天遇到一个问题:在对同name 的input 表单时 判断其值是否有效

用了each判断

当初错误的做法:

    function check_goods()
    {
        var regs = /^d+$/;
        $("form[name='event'] input.goods_id").each(function(){
            if($(this).val() == '' || !regs.test($(this).val()))
            {
                alert('请输入必要商品信息:id值和商品件数');
                return false;
            }
        })
    }

错误点是:这里在循环中return false 但是表单却还是提交了;
为什么没有阻止!!
后来:宏鸿看过之后改了一个点。

    function checkGoods(){
        var regs = /^d+$/;
        var flag = true;
        $("form[name='event'] input.goods_id").each(function(){
            if($(this).val() == '' || !regs.test($(this)).val())
            {
                alert('请输入必要商品信息:id值和商品件数');
                flag = false;
                return;
            }
        })
        return flag;
    }

完整知识:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script language="javascript">
//--->
function checksubmit()
{
  if (document.form1.myname.value=="")
        {
           alert("请输入开始数值!");
           document.form1.myname.focus();
           return false;
        } 
          return true;  
}
//--->
</script>

<form name="form1" method="post" action="#" onsubmit="return checksubmit()">
  <label>
  <input name="myname" type="text" id="id">
  </label>
  <p>
    <label>
    <input type="submit" name="Submit" value="提交">
    </label>
  </p>

  

代码很简单。

注意以下几点:

1,在js中,是获得input的name,而不是id,往往这里的name和id一样。

2,onsubmit="return checksubmit()" 这里的return不能省掉。

3,checksubmit()函数里面的return true;可以省去,因为默认是返回true;

参考:

http://www.cnblogs.com/wangkongming/archive/2012/12/13/2816390.html

原文地址:https://www.cnblogs.com/logon/p/3165132.html