Ext数据校验

在firefox中,如果校验失败是不会执行提交操作的;但是在IE中则会提交,需要用form.isValid()来判断。

在提交前调用判断是否数据校验OK:

//数据校验

if (!form.getForm().isValid()){

Ext.Msg.alert('信息','有些必输项未输入!');

return;

}

 

要想提示,需要把Ext.QuickTips.init();打开,否则看到的就是红色的波浪线,没文字提示。

20.1输入不能为空

继承自Ext.form.TextField的控件都支持非空校验,它们是:TextField、NumberField、TextArea、TriggerField、Combobox、DateField、TimerField。

举例:

var textfield = new Ext.form.TextField({

fieldLabel:"Username",

allowBlank:false,

emptyText:"请输入数据",

blankText:"此项为必输项!",

name:"username",

minLength:6,

maxLength:16

});

页面加载后输入框中提示“请输入数据”,如果没有输入数据,则在提交时或焦点离开输入框时提示“此项为必输项!”。

 

20.2限制输入长度

代码:

var textfield = new Ext.form.TextField({

fieldLabel:"Username",

allowBlank:false,

emptyText:"请输入数据",

blankText:"此项为必输项!",

name:"username",

minLength:6,

minLengthText:"最少输入6位!",

maxLengthText:"最多输入16位!",

maxLength:16

});

 

20.3借助Vtype验证

Ext提供了一套默认的验证方案,如果使用它们就只需要记住vtype即可,就不需要记住一长串的正则表达式了,然后在控件中配置即可。

例如:

var email = new Ext.form.TextField({

fieldLabel:"Email",

allowBlank:false,

emptyText:"请输入数据",

name:"email",

minLength:6,

maxLength:16,

vtype:"email"

});

这些信息定义在Ext.form.Vtype中,默认支持4vtype:

1. email:电子邮件格式

2.url:网址

3.alpha:英文字母

4.alphanum:英文字母+数字

 

如果要扩展自己的vtype,可以这样:

Ext.apply(Ext.form.VTypes, {

IPAddress:function(v) {

return/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v);

},

IPAddressText: 'Must be a numeric IP address'

});

这样就扩展了一种vtype:IPAddress

 

这样使用就可以了:

var ip = new Ext.form.TextField({

fieldLabel:"Ip",

allowBlank:false,

emptyText:"请输入数据",

name:"ip",

minLength:6,

maxLength:16,

vtype:"IPAddress"

});

 

20.4自定义校验

其实上面扩展vtype也算是自定义校验规则。自定义校验就是允许使用regex来验证。

例如:

var hanzi = new Ext.form.TextField({

fieldLabel:"汉字",

allowBlank:false,

emptyText:"请输入数据",

name:"hanzi",

minLength:6,

maxLength:16,

regex:/^[\u4E00-\u9FA5]+$/,

regexText:"只能输入汉字!"

});

 

20.5后台校验

在后台返回的消息中,只要返回错误消息errors,并把它放到正确的地方,Ext会自动将错误信息显示到相应的位置。

示例:

// 后台校验

Ext.onReady(function() {

Ext.QuickTips.init();

 

var serverText = new Ext.form.TextField({

fieldLabel:"后台校验",

name:"houtai"

});

 

var form = new Ext.form.FormPanel({

title:"Ext默认表单提交方式",

width:800,

labelAlign:"right",

labelWidth:100,

url:'/myExt2.3/AjaxSubmitForm.do',

renderTo:document.body,

items:[

serverText

],

buttons:[

{

text:"提交",

handler:function() {

//数据校验

if (!form.getForm().isValid()) {

Ext.Msg.alert('信息','有些必输项未输入!');

return;

}

 

form.getForm().submit({

success: function(form,action) {

Ext.Msg.alert('提示',action.result.msg);

},

failure: function(form,action) {

//Ext.Msg.alert('提示','提交失败!');

if (action.failureType == Ext.form.Action.SERVER_INVALID) {// 业务错误

//Ext.Msg.alert('提示','提交失败!');

}

else { // 网络问题

Ext.Msg.alert('提示','网络连接故障!');

}

}

});

}

}

]

});

});

 

Servlet

Stringhoutai = request.getParameter("houtai");

if(houtai.replace("","").length() == 0) {

response.getWriter().write("{success:false,errors:{houtai:'后台提示不能为空!'}}");

}

else {

response.getWriter().write("{success:true,msg:'表单提交成功!'}");

}

 

A. 不输入任何内容,单击提交按钮


这里的提示信息就是后台返回的提示信息,在Servlet返回的errors中定义的。

B. 输入内容,单击提交按钮、


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值