客户页面有一个循环输出的文本框,name属性为grade[],id为grade,现在我要对输入的内容作服务器端检测,条件如下:输入的内容必须是6位数字。代码如下。现在的问题是这个服务器端检测已经可以使用,检测没问题时执行下面的数据处理程序(这里没给出),但是如果输入内容不符合条件时,下面的数据处理程序仍然会执行。怎么办?求教。我尝试在检测程序里加了die();以及exit;和exit();都没有效果。如果您觉得用js也可以实现的话那就太好不过了,我给出表单(因为数据处理程序在本页面,所以action为空,你懂得。):
各位大侠帮忙,各显神通,描述应该很详细了,晚上来看。
<form name="form1" id="form1" action="" method="post">
<input type="text" size="6" name="grade[]" id="grade"/>
<input type="submit" name="submit" value="提交" />
</form><?php
$grade=$_POST['grade'];
for($j=0;$j<count($grade);$j++){
if($grade[$j]!=""){
if(strlen($grade[$j])==6){
if(!preg_match("/^\d*$/",$grade[$j])){
echo '<script language="javascript">alert("请正确输入数字!");window.history.go(-1);</script>';
break;
die();
}
}else{
echo '<script language="javascript">alert("输入内容必须是6位数字!");window.history.go(-1);</script>';
break;
die();
}
}
}
?>

解决方案 »

  1.   

    由于name属性是数组,不太会怎么去验证,求解啊?
      

  2.   

    <script>
    function foo(){
        var grades=document.getElementsByName('grade[]');
    var flag=true,grade_value=null; 
    for(var i=0,len=grades.length;i<len;i++){
            grade_value=grades[i].value;
    if(grade_value=="" || !/^\d{6}$/.test(grade_value)){
                flag=false;
                break;
                } 
    } return flag;
    }
    </script>
    <form name="form1" id="form1" action="" method="post" onsubmit="return foo()">
    <input type="text" size="6" name="grade[]" id="grade"/>
    <input type="text" size="6" name="grade[]" id="grade"/>
    <input type="submit" name="submit" value="提交" />
    </form>