今天遇到一个问题:在对同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