javascript级的validaotr

03-11-07 crogers

这个东西,不知道大家有没有兴趣,大概用了10天,把快速原型搭建出来了。我想,即使以后领导不用,也都可以用这个思路,把struts或者其他的validator扩展到真正的web级别上

下面是一个示范,省略了通用的javascript控制部分,省略了java级别检查,这些都已经做到了

validator定义:
<?xml version="1.0" encoding="GBK"?>
<!-- 当该文件生效时,所有的表单设置,与本xml冲突的均会被修改为一致 -->
<!-- needjs默认true -->
<form name="action1" action="test1_submit.jsp" needjs="true">
	<!-- color在未来再做可配置,快速原型放弃 -->
	<LostFocusColor/>
	<GetFocusColor/>
	<!-- global规则定义,对任意多个global来说,constant的name都应该是唯一的 -->
	<global>validator//global1.xml</global>
	<!-- required默认false,spacetrim默认true -->
	<field name="username" info="xxx" required="true" spacetrim="true">
		<message>
			用户名不允许为空,且必须为字母和数字组成。
		</message>
		<validator>
			^[A-Za-z0-9]+$
    </validator>
	</field>
	<field name="password" required="true" spacetrim="true">
		<message>
			密码最少3位,最长8位,必须全数字。
		</message>
		<validator-constant>
			num38
    </validator-constant>
		<!-- 表示强制约束关系,equal表示必须相等,默认为false,当equal为true,则validator节点无效 -->
		<!-- 支持多个otherfield节点 -->
		<otherfield name="password1" equal="true">
			<!-- 当无validator-condition表示任意的条件都可以 -->
			<!-- 现在只支持一个validator节点 -->
			<validator validator-condition="^[A-Za-z0-9]+$">
				^[A-Za-z0-9]+$
			</validator>
		</otherfield>
	</field>
	<field name="password1">
		<message>
			重复密码最少3位,最长8位,必须全数字,必须与密码一致。
		</message>
		<validator-constant>
			num38
    </validator-constant>		
	</field>
	<field name="btnSubmit">
	</field>
</form>

生成的javascript代码:
<!-- validator自动机开始 -->
<SCRIPT Language="JavaScript" src="/validator/validator.js"></SCRIPT>
<script>
var validator_formname='newadslwithtel';
if(document.newadslwithtel==null){validator_log('error:未能找到validator申明的form name');}
document.newadslwithtel.action='testnewadslwithtel_submit.jsp';
validator_autoinit('newadslwithtel');
var validator_re; //正则对象
var validator_es=document.newadslwithtel.elements; //整个form中field的数组
function validator_bChkField(elem){
 var validator_value=validator_getvalue(elem);
 if(elem.name=='ZRMC'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:用户名称不允许为空,长度最大为10。');
   return false;
  }
  //正则,当是checkbox的时候,用validator_value代替
  validator_re=new RegExp("^[^\f\n\r\t\v]{0,10}$");
  if(!validator_re.test(validator_value)){
   validator_log('error:用户名称不允许为空,长度最大为10。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='ZRLX'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:用户类型必选一个。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='ZRLR'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:联系人不允许为空,长度最大为10。');
   return false;
  }
  //正则,当是checkbox的时候,用validator_value代替
  validator_re=new RegExp("^[^\f\n\r\t\v]{0,10}$");
  if(!validator_re.test(validator_value)){
   validator_log('error:联系人不允许为空,长度最大为10。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='ZRDH'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:联系电话不允许为空,长度最大为20。');
   return false;
  }
  //正则,当是checkbox的时候,用validator_value代替
  validator_re=new RegExp("^[^\f\n\r\t\v]{0,20}$");
  if(!validator_re.test(validator_value)){
   validator_log('error:联系电话不允许为空,长度最大为20。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='ZRMM'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:电话服务密码不允许为空,必须全数字,必须6位。');
   return false;
  }
  //global
  if(!validator_constant_telpassword_check(validator_value)){
   validator_log('error:电话服务密码不允许为空,必须全数字,必须6位。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='ZRMM1'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:电话服务密码不允许为空,必须全数字,必须6位,必须两次输入的密码一致。');
   return false;
  }
  //global
  if(!validator_constant_telpassword_check(validator_value)){
   validator_log('error:电话服务密码不允许为空,必须全数字,必须6位,必须两次输入的密码一致。');
   return false;
  }
  //other equal
  if(validator_value!=validator_getvalue(validator_es('ZRMM'))){
   validator_log('error:电话服务密码不允许为空,必须全数字,必须6位,必须两次输入的密码一致。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_1'){
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_15'){
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_TXC1_15'){
  //other 正则
  var validator_otherfield_condition=false;
  validator_re=new RegExp("-1");
  validator_otherfield_condition=validator_re.test(validator_getvalue(validator_es('Tel_TX_15')));
  if(validator_otherfield_condition){
   validator_re=new RegExp("-1");
   if(!validator_re.test(validator_value)){
    validator_log('error:缩位拨号位数,当选择了缩位拨号必选,否则必须选择为-无缩位拨号。');
    return false;
  }
  }
  //other 正则
  var validator_otherfield_condition=false;
  validator_re=new RegExp("0");
  validator_otherfield_condition=validator_re.test(validator_getvalue(validator_es('Tel_TX_15')));
  if(validator_otherfield_condition){
   validator_re=new RegExp("^[123]+$");
   if(!validator_re.test(validator_value)){
    validator_log('error:缩位拨号位数,当选择了缩位拨号必选,否则必须选择为-无缩位拨号。');
    return false;
  }
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_22'){
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_12'){
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_20'){
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_TXC1_116'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_TX_TXC1_116_1'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //other equal
  if(validator_value!=validator_getvalue(validator_es('Tel_TX_TXC1_116'))){
   validator_log('error:呼出加锁密码在选择了长途或市内呼出加锁时必须填4位数字且两次输入一致,否则必须不填。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_ZHZH'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:银行帐号必填,必须全数字,长度小于20位。');
   return false;
  }
  //正则,当是checkbox的时候,用validator_value代替
  validator_re=new RegExp("^[0-9]{0,20}$");
  if(!validator_re.test(validator_value)){
   validator_log('error:银行帐号必填,必须全数字,长度小于20位。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='Tel_ZHZH1'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:银行帐号必填,必须全数字,长度小于20位,且两次输入必须一致。');
   return false;
  }
  //正则,当是checkbox的时候,用validator_value代替
  validator_re=new RegExp("^[0-9]{0,20}$");
  if(!validator_re.test(validator_value)){
   validator_log('error:银行帐号必填,必须全数字,长度小于20位,且两次输入必须一致。');
   return false;
  }
  //other equal
  if(validator_value!=validator_getvalue(validator_es('Tel_ZHZH'))){
   validator_log('error:银行帐号必填,必须全数字,长度小于20位,且两次输入必须一致。');
   return false;
  }
 }
 var validator_value=validator_getvalue(elem);
 if(elem.name=='ADSL_ZRDL'){
  //trim操作,只对text和password做
  if(null!=elem.type && ('text'==elem.type || 'password'==elem.type)){
   elem.value=validator_trim(elem.value);
   validator_value=elem.value;
  }
  //空值判断
  if(null==validator_value || ''==validator_value){
   validator_log('error:ADSL业务登录名必须8位内的小写字母或数字,同时必须sz开头,必须与已有的登录名不重复。');
   return false;
  }
  //正则,当是checkbox的时候,用validator_value代替
  validator_re=new RegExp("sz[0-9a-z]{0,6}$");
  if(!validator_re.test(validator_value)){
   validator_log('error:ADSL业务登录名必须8位内的小写字母或数字,同时必须sz开头,必须与已有的登录名不重复。');
   return false;
  }
 }
  return true;
 }
function validator_submit(formname){
 var validator_value=validator_getvalue(validator_es('ZRMC'));
 validator_es('ZRMC').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:用户名称不允许为空,长度最大为10。');
  validator_makeFocus(validator_es('ZRMC'),'newadslwithtel');
  return false;
 }
 validator_re=new RegExp("^[^\f\n\r\t\v]{0,10}$");
 if(!validator_re.test(validator_value)){
  validator_log('error:用户名称不允许为空,长度最大为10。');
  validator_makeFocus(validator_es('ZRMC'),'newadslwithtel');
  return false;
 }
 var validator_value=validator_getvalue(validator_es('ZRLX'));
 validator_es('ZRLX').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:用户类型必选一个。');
  validator_makeFocus(validator_es('ZRLX'),'newadslwithtel');
  return false;
 }
 var validator_value=validator_getvalue(validator_es('ZRLR'));
 validator_es('ZRLR').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:联系人不允许为空,长度最大为10。');
  validator_makeFocus(validator_es('ZRLR'),'newadslwithtel');
  return false;
 }
 validator_re=new RegExp("^[^\f\n\r\t\v]{0,10}$");
 if(!validator_re.test(validator_value)){
  validator_log('error:联系人不允许为空,长度最大为10。');
  validator_makeFocus(validator_es('ZRLR'),'newadslwithtel');
  return false;
 }
 var validator_value=validator_getvalue(validator_es('ZRDH'));
 validator_es('ZRDH').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:联系电话不允许为空,长度最大为20。');
  validator_makeFocus(validator_es('ZRDH'),'newadslwithtel');
  return false;
 }
 validator_re=new RegExp("^[^\f\n\r\t\v]{0,20}$");
 if(!validator_re.test(validator_value)){
  validator_log('error:联系电话不允许为空,长度最大为20。');
  validator_makeFocus(validator_es('ZRDH'),'newadslwithtel');
  return false;
 }
 var validator_value=validator_getvalue(validator_es('ZRMM'));
 validator_es('ZRMM').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:电话服务密码不允许为空,必须全数字,必须6位。');
  validator_makeFocus(validator_es('ZRMM'),'newadslwithtel');
  return false;
 }
 if(!validator_constant_telpassword_check(validator_value)){
  validator_log('error:电话服务密码不允许为空,必须全数字,必须6位。');
  validator_makeFocus(validator_es('ZRMM'),'newadslwithtel');
  return false;
 }
 var validator_value=validator_getvalue(validator_es('ZRMM1'));
 validator_es('ZRMM1').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:电话服务密码不允许为空,必须全数字,必须6位,必须两次输入的密码一致。');
  validator_makeFocus(validator_es('ZRMM1'),'newadslwithtel');
  return false;
 }
 if(!validator_constant_telpassword_check(validator_value)){
  validator_log('error:电话服务密码不允许为空,必须全数字,必须6位,必须两次输入的密码一致。');
  validator_makeFocus(validator_es('ZRMM1'),'newadslwithtel');
  return false;
 }
  if(validator_value!=validator_getvalue(validator_es('ZRMM'))){
  validator_log('error:电话服务密码不允许为空,必须全数字,必须6位,必须两次输入的密码一致。');
  validator_makeFocus(validator_es('ZRMM1'),'newadslwithtel');
   return false;
  }
 var validator_value=validator_getvalue(validator_es('Tel_TX_1'));
 var validator_value=validator_getvalue(validator_es('Tel_TX_15'));
 var validator_value=validator_getvalue(validator_es('Tel_TX_TXC1_15'));
  var validator_otherfield_condition=false;
  validator_re=new RegExp("-1");
  validator_otherfield_condition=validator_re.test(validator_getvalue(validator_es('Tel_TX_15')));
  if(validator_otherfield_condition){
   validator_re=new RegExp("-1");
   if(!validator_re.test(validator_value)){
  validator_log('error:缩位拨号位数,当选择了缩位拨号必选,否则必须选择为-无缩位拨号。');
  validator_makeFocus(validator_es('Tel_TX_TXC1_15'),'newadslwithtel');
    return false;
  }
  }
  var validator_otherfield_condition=false;
  validator_re=new RegExp("0");
  validator_otherfield_condition=validator_re.test(validator_getvalue(validator_es('Tel_TX_15')));
  if(validator_otherfield_condition){
   validator_re=new RegExp("^[123]+$");
   if(!validator_re.test(validator_value)){
  validator_log('error:缩位拨号位数,当选择了缩位拨号必选,否则必须选择为-无缩位拨号。');
  validator_makeFocus(validator_es('Tel_TX_TXC1_15'),'newadslwithtel');
    return false;
  }
  }
 var validator_value=validator_getvalue(validator_es('Tel_TX_22'));
 var validator_value=validator_getvalue(validator_es('Tel_TX_12'));
 var validator_value=validator_getvalue(validator_es('Tel_TX_20'));
 var validator_value=validator_getvalue(validator_es('Tel_TX_TXC1_116'));
 validator_es('Tel_TX_TXC1_116').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 var validator_value=validator_getvalue(validator_es('Tel_TX_TXC1_116_1'));
 validator_es('Tel_TX_TXC1_116_1').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
  if(validator_value!=validator_getvalue(validator_es('Tel_TX_TXC1_116'))){
  validator_log('error:呼出加锁密码在选择了长途或市内呼出加锁时必须填4位数字且两次输入一致,否则必须不填。');
  validator_makeFocus(validator_es('Tel_TX_TXC1_116_1'),'newadslwithtel');
   return false;
  }
 var validator_value=validator_getvalue(validator_es('Tel_ZHZH'));
 validator_es('Tel_ZHZH').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:银行帐号必填,必须全数字,长度小于20位。');
  validator_makeFocus(validator_es('Tel_ZHZH'),'newadslwithtel');
  return false;
 }
 validator_re=new RegExp("^[0-9]{0,20}$");
 if(!validator_re.test(validator_value)){
  validator_log('error:银行帐号必填,必须全数字,长度小于20位。');
  validator_makeFocus(validator_es('Tel_ZHZH'),'newadslwithtel');
  return false;
 }
 var validator_value=validator_getvalue(validator_es('Tel_ZHZH1'));
 validator_es('Tel_ZHZH1').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:银行帐号必填,必须全数字,长度小于20位,且两次输入必须一致。');
  validator_makeFocus(validator_es('Tel_ZHZH1'),'newadslwithtel');
  return false;
 }
 validator_re=new RegExp("^[0-9]{0,20}$");
 if(!validator_re.test(validator_value)){
  validator_log('error:银行帐号必填,必须全数字,长度小于20位,且两次输入必须一致。');
  validator_makeFocus(validator_es('Tel_ZHZH1'),'newadslwithtel');
  return false;
 }
  if(validator_value!=validator_getvalue(validator_es('Tel_ZHZH'))){
  validator_log('error:银行帐号必填,必须全数字,长度小于20位,且两次输入必须一致。');
  validator_makeFocus(validator_es('Tel_ZHZH1'),'newadslwithtel');
   return false;
  }
 var validator_value=validator_getvalue(validator_es('ADSL_ZRDL'));
 validator_es('ADSL_ZRDL').value=validator_trim(validator_value);
 validator_value=validator_trim(validator_value);
 if(null==validator_value || ''==validator_value){
  validator_log('error:ADSL业务登录名必须8位内的小写字母或数字,同时必须sz开头,必须与已有的登录名不重复。');
  validator_makeFocus(validator_es('ADSL_ZRDL'),'newadslwithtel');
  return false;
 }
 validator_re=new RegExp("sz[0-9a-z]{0,6}$");
 if(!validator_re.test(validator_value)){
  validator_log('error:ADSL业务登录名必须8位内的小写字母或数字,同时必须sz开头,必须与已有的登录名不重复。');
  validator_makeFocus(validator_es('ADSL_ZRDL'),'newadslwithtel');
  return false;
 }
 return true;
}
function validator_constant_num38_check(value){
 value=validator_trim(value);
  if(null==value || ''==value){
   return false;
  }
  validator_re=new RegExp("^[0-9]{3,8}$");
  if(!validator_re.test(value)){
   return false;
  }
 return true;
}
function validator_constant_telpassword_check(value){
 value=validator_trim(value);
  if(null==value || ''==value){
   return false;
  }
  validator_re=new RegExp("^[0-9]{6}$");
  if(!validator_re.test(value)){
   return false;
  }
 return true;
}
</script>
<!-- validator自动机结束 -->

<p>[code]
// 在此输入java代码
<p>
[/code]
         

crogers
2003-11-07 11:18
呵呵,发多了,那两篇banq删掉吧~

这是一个快速原型来的,也没有真正完成

后天就要去北京10天,就不会继续弄了

贴上来给大家看看,相信还是有人会感兴趣的吧,;pp

crogers
2003-11-07 11:20
上面的validator定义和javascript结果对不上

按上面的javascript结果,validator定义为:

<?xml version="1.0" encoding="GBK"?>
<!-- 当该文件生效时,所有的表单设置,与本xml冲突的均会被修改为一致 -->
<!-- needjs默认true -->
<form name="newadslwithtel" action="testnewadslwithtel_submit.jsp" needjs="true">
	<!-- color在未来再做可配置,快速原型放弃 -->
	<LostFocusColor/>
	<GetFocusColor/>
	<!-- global规则定义,对任意多个global来说,constant的name都应该是唯一的 -->
	<global>validator//global1.xml</global>
	<!-- required默认false,spacetrim默认true -->
	<!-- type默认text(包括password和select),非text需要做空值翻译为-1 -->
	<field name="ZRMC" required="true" spacetrim="true">
		<message>
			用户名称不允许为空,长度最大为10。
		</message>
		<validator>
			^[^\f\n\r\t\v]{0,10}$
    </validator>
	</field>
	<field name="ZRLX" required="true" spacetrim="true">
		<message>
			用户类型必选一个。
		</message>
	</field>
	<field name="ZRLR" required="true" spacetrim="true">
		<message>
			联系人不允许为空,长度最大为10。
		</message>
		<validator>
			^[^\f\n\r\t\v]{0,10}$
    </validator>
	</field>
	<field name="ZRDH" required="true" spacetrim="true">
		<message>
			联系电话不允许为空,长度最大为20。
		</message>
		<validator>
			^[^\f\n\r\t\v]{0,20}$
    </validator>
	</field>
	<field name="ZRMM" required="true" spacetrim="true">
		<message>
			电话服务密码不允许为空,必须全数字,必须6位。
		</message>
		<validator-constant>
			telpassword
    </validator-constant>		
		<otherfield name="ZRMM1" equal="true"/>
	</field>
	<field name="ZRMM1" required="true" spacetrim="true">
		<message>
			电话服务密码不允许为空,必须全数字,必须6位,必须两次输入的密码一致。
		</message>
		<validator-constant>
			telpassword
    </validator-constant>		
	</field>
	<field name="Tel_TX_1" required="false" spacetrim="false" type="checkbox">
		<message>
			追查恶意呼叫。
		</message>
	</field>
	<field name="Tel_TX_15" required="false" spacetrim="false" type="checkbox">
		<message>
			缩位拨号。
		</message>
		<otherfield name="Tel_TX_TXC1_15" equal="false">
			<validator validator-condition="-1">
				-1
			</validator>
		</otherfield>
		<otherfield name="Tel_TX_TXC1_15" equal="false">
			<validator validator-condition="0">
				^[123]+$
			</validator>
		</otherfield>
	</field>
	<field name="Tel_TX_TXC1_15" required="false" spacetrim="false">
		<message>
			缩位拨号位数,当选择了缩位拨号必选,否则必须选择为-无缩位拨号。
		</message>
	</field>
	<field name="Tel_TX_22" required="false" spacetrim="false">
		<message>
			来电显示。
		</message>
	</field>
	<field name="Tel_TX_12" required="false" spacetrim="false" type="checkbox">
		<message>
			长途呼出加锁。
		</message>
		<otherfield name="Tel_TX_116" equal="false">
			<validator validator-condition="-1">
				^[\f\n\r\t\v]{0}$
			</validator>
		</otherfield>
		<otherfield name="Tel_TX_116" equal="false">
			<validator validator-condition="0">
				^[0-9]{4}$
			</validator>
		</otherfield>
	</field>
	<field name="Tel_TX_20" required="false" spacetrim="false" type="checkbox">
		<message>
			市内呼出加锁。
		</message>
		<otherfield name="Tel_TX_116" equal="false">
			<validator validator-condition="-1">
				^[\f\n\r\t\v]{0,1}$
			</validator>
		</otherfield>
		<otherfield name="Tel_TX_116" equal="false">
			<validator validator-condition="0">
				^[0-9]{4}$
			</validator>
		</otherfield>
	</field>
	<field name="Tel_TX_TXC1_116" required="false" spacetrim="true">
		<message>
			呼出加锁密码在选择了长途或市内呼出加锁时必须填4位数字,否则必须不填。
		</message>
		<otherfield name="Tel_TX_TXC1_116_1" equal="true"/>
	</field>
	<field name="Tel_TX_TXC1_116_1" required="false" spacetrim="true">
		<message>
			呼出加锁密码在选择了长途或市内呼出加锁时必须填4位数字且两次输入一致,否则必须不填。
		</message>
	</field>
	<field name="Tel_ZHZH" required="true" spacetrim="true">
		<message>
			银行帐号必填,必须全数字,长度小于20位。
		</message>
		<validator>
			^[0-9]{0,20}$
		</validator>
		<otherfield name="Tel_ZHZH1" equal="true"/>
	</field>
	<field name="Tel_ZHZH1" required="true" spacetrim="true">
		<message>
			银行帐号必填,必须全数字,长度小于20位,且两次输入必须一致。
		</message>
		<validator>
			^[0-9]{0,20}$
		</validator>
	</field>
	<field name="ADSL_ZRDL" required="true" spacetrim="true">
		<message>
			ADSL业务登录名必须8位内的小写字母或数字,同时必须sz开头,必须与已有的登录名不重复。
		</message>
		<validator>
			sz[0-9a-z]{0,6}$
		</validator>
		<validator-javamethod>
			com.sztelecom.ibss.chenwenjingtest.validatormethod.ADSL_ZRDL
		</validator-javamethod>
	</field>
</form>

<p>

jaghuang
2003-11-13 08:39
实现validator的地方是有很多,比如javascript,sessionbean,entitybean(这两个是ejb),formaction,actionbean(这两个是struts),但在考虑到整体结构的时候,我们是否应该将这样的检测统一在同一个地方来判断呢?要说所有判断的话,我想,光数据库数据判断这一功能就可以判javascript(除非你是用access)死刑了。

crogers
2003-11-14 13:22
你要看用户怎么要求的

如果用户录入的内容超过100项

你提交了才告诉他约束条件,用户会有意见d...

呵呵,可能你觉得这个需求很bt,但是,这样的需求在不少大的系统实际上肯定都有的

猜你喜欢
3Go 1 2 3 下一页