今天查数据,发现页面上的一个三级下拉框必填项,在数据库中出现了空值。查看页面:jsp页面:   <tr>
<td >身份证登记地址:</td>
<td colspan="3">
<list:options dicName="DicProvince" property="proNatCode" replaceEmpty="true" filterCondition="((1[1-9])|([02-9]\d))0000$" emptyText="请选择…" onchange="setCityOrCounty(this.value,'citNatCode');setCityOrCounty(this.value,'couNatCode');setNatAreaCode(this)" />
     <select name="citNatCode" onchange="setCityOrCounty(this.value,'couNatCode');setNatAreaCode(this)"></select>
     <select name="couNatCode" onchange="setNatAreaCode(this)"></select>
     <html:text styleId="nativePlaceDet" property="psActor.nativePlaceDet" />&nbsp;<font color="red" id="idCardAddress">*</font>
</td>
   </tr> 保存时的校验:   if((document.getElementById("proNatCode").value==null ||document.getElementById("proNatCode").value=='')){
alert("请选择身份证登记地址");
document.getElementById("proNatCode").focus();
return false;
}else if((nativePlaceDet.value==null ||nativePlaceDet.value=='')){
alert("请输入身份证登记地址");
document.getElementById("nativePlaceDet").focus();
return false;
}我经过N次测试,经过这样的校验,如果三级下拉框不选择值,点击保存按钮,是不能成功的。
但是现在库中用户录入了2000多条数据,有95条数据的这个字段是空。
一直没想明白用户是怎么录进去的。曾经遇到过这样一种情况,在查询条件中,有三级下拉框,查询完毕后,去其他页面进行业务操作,再返回该查询页面时,上次选择的三级下拉框的内容还存在,点击查询按钮后,但是并不起作用。
不知道这次遇到的录入,也是这样的问题,即IE缓存引起的,在javaScript的校验中,能校验到非空,但是最后save(对象)的时候,这个值是空的。请高手赐教!

解决方案 »

  1.   

    form提交的时候用js
    alert()看看....
    这个问题很容易找
      

  2.   


    如果下拉框我不选择任何值,js校验就没通过,不可能保存上,我和测试人员也经过了N次测试,没问题。但是客户保存上了。我只是不明白用户是怎么保存上的。个人认为,我的校验没问题
      

  3.   

    脏数据?最好是后台也做一遍校验 因为可以模拟form递交