永发信息网

PHP表单JS验证的一个简单问题

答案:5  悬赏:0  手机版
解决时间 2021-04-06 10:16
<?php<br>include("./ctrol/get.php");<br> if($_POST[submit]){<br><br> $add = new tras;<br> $add -> ins();<br> echo"&lt;script&gt;location.href='index.php'&lt;&#47;script&gt;";<br> }<br>?><br><script language="javascript"><br>function change(){<br> if (myform.name.value=="")<br> {<br> alert("请填写用户名");<br> myform.user.focus();<br> return false;<br> }<br> if (myform.age.value=="")<br> {<br> alert("请填写年龄");<br> myform.content.focus();<br> return false;<br> }<br> if(myform.sex.checked==false){<br> alert("请选择性别");<br> }<br> return true;<br>}<br>&lt;&#47;script&gt;<br>现在一点提交,不管有没有内容都会传到数据库里而且不合格时也跳转,哪位高手给看看。<br>希望达到的效果是先JS,JS全部通过后,再提交到PHP。
最佳答案
如果你写的是正确的话应该是这样对表单验证的<br><br><form name="theForm" onsubmit="return change();"><br>  .....<br></form><br><br>这样如果你的JS验证代码无误的话,应该是运行正常的。但这个有一个小问题,就是偶而会有些莫名其妙的东西出来,就是明明表单有错误却无缘无故可以提交。<br><br>我一般是这样处理的:<br><br><form name="theForm" ><br>  .....<br>    <input type="button" value="提交" onclick="change(this.form);"><br></form><br>此处的FORM表单不采用 onsubmit 验证方法(注意上面代码的提交按钮,不是submit而是button)。而是交给JS去处理,将整个FORM表单当成参数传递给验证函数,我修改下你的代码如下。<br><br><script language="javascript"><br>function change(myform){<br> if (myform.name.value=="")<br> {<br> alert("请填写用户名");<br> myform.user.focus();<br> return false;<br> }<br> if (myform.age.value=="")<br> {<br> alert("请填写年龄");<br> myform.content.focus();<br> return false;<br> }<br> if(myform.sex.checked==false){<br>    alert("请选择性别");<br>    myform.sex.focus();<br>    return false;<br> }<br><br>    myform.submit(); //如果上面的全部能过,则提交表单。 <br>}<br>&lt;&#47;script&gt;
全部回答
直接写成一个类了。。 功能强大。 <title>表单验证类 validator v1.05</title> <style> body,td{font:normal 12px verdana;color:#333333} input,textarea,select,td{font:normal 12px verdana;color:#333333;border:1px solid #999999;background:#ffffff} table{border-collapse:collapse;} td{padding:3px} input{height:20;} textarea{width:80%;height:50px;overflow:auto;} form{display:inline} </style> <table align="center"> <form name="theform" id="demo" method="get" onsubmit="return validator.validate(this,2)"> <tr> <td>身份证号:</td><td><input name="card" datatype="idcard" msg="身份证号错误"></td> </tr> <tr> <td>真实姓名:</td><td><input name="name" datatype="chinese" msg="真实姓名只允许中文"></td> </tr> <tr> <td>id:</td><td><input name="username" datatype="username" msg="id名不符合规定"></td> </tr> <tr> <td>英文名:</td><td><input name="nick" datatype="english" require="false" msg="英文名只允许英文字母"></td> </tr> <tr> <td>主页:</td><td><input name="homepage" require="false" datatype="url" msg="非法的url"></td> </tr> <tr> <td>密码:</td><td><input name="password" datatype="safestring" msg="密码不符合安全规则" type="password"></td> </tr> <tr> <td>重复:</td><td><input name="repeat" datatype="repeat" to="password" msg="两次输入的密码不一致" type="password"></td> </tr> <tr> <td>信箱:</td><td><input name="email" datatype="email" msg="信箱格式不正确"></td> </tr> <tr> <td>信箱:</td><td><input name="email" datatype="repeat" to="email" msg="两次输入的信箱不一致"></td> </tr> <tr> <td>qq:</td><td><input name="qq" require="false" datatype="qq" msg="qq号码不存在"></td> </tr> <tr> <td>身份证:</td><td><input name="card" datatype="idcard" msg="身份证号码不正确"></td> </tr> <tr> <td>年龄:</td><td><input name="year" datatype="range" msg="年龄必须在18~28之间" min="18" max="28"></td> </tr> <tr> <td>年龄1:</td><td><input name="year1" require="false" datatype="compare" msg="年龄必须在18以上" to="18" operator="greaterthanequal"></td> </tr> <tr> <td>电话:</td><td><input name="phone" require="false" datatype="phone" msg="电话号码不正确"></td> </tr> <tr> <td>手机:</td><td><input name="mobile" require="false" datatype="mobile" msg="手机号码不正确"></td> </tr> <tr> <td>生日:</td><td><input name="birthday" datatype="date" format="ymd" msg="生日日期不存在"></td> </tr> <tr> <td>邮政编码:</td><td><input name="zip" datatype="custom" regexp="^[1-9]\d{5}$" msg="邮政编码不存在"></td> </tr> <tr> <td>邮政编码:</td><td><input name="zip1" datatype="zip" msg="邮政编码不存在"></td> </tr> <tr> <td>操作系统:</td><td><select name="operation" datatype="require" msg="未选择所用操作系统" ><option value="">选择您所用的操作系统</option><option value="win98">win98</option><option value="win2k">win2k</option><option value="winxp">winxp</option></select></td> </tr> <tr> <td>所在省份:</td><td>广东<input name="province" value="1" type="radio">陕西<input name="province" value="2" type="radio">浙江<input name="province" value="3" type="radio">江西<input name="province" value="4" type="radio" datatype="group" msg="必须选定一个省份" ></td> </tr> <tr> <td>爱好:</td><td>运动<input name="favorite" value="1" type="checkbox">上网<input name="favorite" value="2" type="checkbox">听音乐<input name="favorite" value="3" type="checkbox">看书<input name="favorite" value="4" type="checkbox"" datatype="group" min="2" max="3" msg="必须选择2~3种爱好"></td> </tr> <td>自我介绍:</td><td><textarea name="description" datatype="limit" max="10" msg="自我介绍内容必须在10个字之内">中文是一个字</textarea></td> </tr> <td>自传:</td><td><textarea name="history" datatype="limitb" min="3" max="10" msg="自传内容必须在[3,10]个字节之内">中文是两个字节t</textarea></td> </tr> <tr> <td>相片上传:</td><td><input name="up" datatype="filter" msg="非法的文件格式" type="file" accept="jpg, gif, png"></td> </tr> <tr> <td colspan="2"><input name="submit" type="submit" value="确定提交"><input onclick="validator.validate(document.getelementbyid('demo'))" value="检验模式1" type="button"><input onclick="validator.validate(document.getelementbyid('demo'),2)" value="检验模式2" type="button"><input onclick="validator.validate(document.getelementbyid('demo'),3)" value="检验模式3" type="button"></td> </tr> </form> </table> <script> validator = { require : /.+/, email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/, mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/, url : /^http:\/\/[a-za-z0-9]+\.[a-za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/, idcard : "this.isidcard(value)", currency : /^\d+(\.\d+)?$/, number : /^\d+$/, zip : /^[1-9]\d{5}$/, qq : /^[1-9]\d{4,8}$/, integer : /^[-\+]?\d+$/, double : /^[-\+]?\d+(\.\d+)?$/, english : /^[a-za-z]+$/, chinese : /^[\u0391-\uffe5]+$/, username : /^[a-z]\w{3,}$/i, unsafe : /^(([a-z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/, issafe : function(str){return !this.unsafe.test(str);}, safestring : "this.issafe(value)", filter : "this.dofilter(value, getattribute('accept'))", limit : "this.limit(value.length,getattribute('min'), getattribute('max'))", limitb : "this.limit(this.lenb(value), getattribute('min'), getattribute('max'))", date : "this.isdate(value, getattribute('min'), getattribute('format'))", repeat : "value == document.getelementsbyname(getattribute('to'))[0].value", range : "getattribute('min') < (value|0) && (value|0) < getattribute('max')", compare : "this.compare(value,getattribute('operator'),getattribute('to'))", custom : "this.exec(value, getattribute('regexp'))", group : "this.mustchecked(getattribute('name'), getattribute('min'), getattribute('max'))", erroritem : [document.forms[0]], errormessage : ["以下原因导致提交失败:\t\t\t\t"], validate : function(theform, mode){ var obj = theform || event.srcelement; var count = obj.elements.length; this.errormessage.length = 1; this.erroritem.length = 1; this.erroritem[0] = obj; for(var i=0;i<count;i++){ with(obj.elements[i]){ var _datatype = getattribute("datatype"); if(typeof(_datatype) == "object" || typeof(this[_datatype]) == "undefined") continue; this.clearstate(obj.elements[i]); if(getattribute("require") == "false" && value == "") continue; switch(_datatype){ case "idcard" : case "date" : case "repeat" : case "range" : case "compare" : case "custom" : case "group" : case "limit" : case "limitb" : case "safestring" : case "filter" : if(!eval(this[_datatype])) { this.adderror(i, getattribute("msg")); } break;
JS验证是在SUBMIT里面加个ONCLICK操作时进行判断的,不需要在PHP代码当中加,,
把 onsubmit="return change()" 加到
标签里去就可以了. 例如: 你可以把你的PHP判断删了,它只负责接收参数就可以了.
<script language="javascript"><br>function change(){<br> if(document.myform.name.value=="")<br> {<br> alert("请填写年龄用户名!");<br> document.myform.name.focus();<br> return false;<br> }<br> if(document.myform.age.value=="")<br> {<br> alert("请填写年龄");<br> document.myform.age.focus();<br> return false;<br> }<br> if(myform.sex.checked==false){<br> alert("请选择性别");<br> }<br> return true;<br>}<br>&lt;&#47;script&gt;<br><br><form name="myform" action="#" method="get" onsubmit="return change()"><br>用户名:<input name="name" type="text" /><br /><br>年龄:<input name="age" type="text" /><br /><br><input name="" type="submit" value="提交" /><br></form>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
形容玉兰花香味的句子,跪求关于玉兰花的语句
买房一般要几室几厅
word2010安装包
在平面直角坐标系中,点P(x,y)在第二象限
吃猪肚能瘦肚吗
双电源自投自复和自投不自负有么区别?
酒店内宾是什么意思,订房时显示仅限内宾是什
如何给自己拍好一组清新校园风照片
Iphone怎么下载空调遥控器
有没有哪个大学可以报成教中西医结合,然后考
保险产品停售告别口号,从北京开出的172次列车
单选题When you decide to s
阿当当皇帝的下一句,情人眼里出西施,下一句
滑县英民小学的副校长是谁
已知fx+2f1/x=2x,那么fx= 打勾的3道题1.3
推荐资讯
尖头货车如何看准右边的角度
女孩在西安月收入2800够用吗?在西安来说工资
西陵区宜昌木林森在哪里啊,我有事要去这里
一个长4cm,宽2cm的长方形按4:1放大,得到的
飞机上可以带梅干嘛?话梅干梅条之类的 不是
护理有没有专升本必要
朝花夕拾优美文段,洁白的婚纱手捧着鲜花,美
【语文】宰相复欲置之郎署的置是什么意思?籍
看相中 神露 是什么意思
Theaccident________thedeathof6passengerswa
剪力墙梁表,LL1的粱截面350x2700是表示
平行四边形的周长为25cm,对边的距离分別为2
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?