为了验证输入域的值为唯一值,扩展了Ext.form.TirggerField
实现Ajax方式的自定义验证输入域。原使用Ext.Ajax的内置方法,但Doc中对request方法的特别注释是:
Important:
Ajax server requests are asynchronous, and this call will
return before the response has been received. Process any returned data
in a callback function.
To execute a callback function in the correct scope, use the scope
option.
如上所说,Ajax服务请求是异步的,即函数会立即返回,然后是执行callback回调方法,这样就会产生时序问题,TriggerField的validator方法会首先接收到函数的undefined返回,这样验证就出现了错误,会误认为验证失败,但Ext.Ajax的config option中没有关于XMLHttpRequest使用异步还是同步的方式请求的设置。这样就没办法解决时序问题,所以改为使用Prototype的Ajax对象实现此功能,Prototype的Ajax中有asynchronous项属性来决定到底使用同步还是异步方式来请求,把asynchronous: false
,时序问题就迎刃而解了。
Ext.ux.UniqueField = Ext.extend(Ext.form.TriggerField, {
allowBlank: false,
validateOnBlur: true,
invalidText: '此字段值需唯一!',
validator: function() {
uniqueFieldValidation(this);
return valid;
},
onTriggerClick: function() {
uniqueFieldValidation(this);
return valid;
}
});
var valid = '';
function uniqueFieldValidation(element) {
new Ajax.Request('dictionaryCodeValidation.do', {
asynchronous: false,
onSuccess: function(response) {
var result = response.responseText.evalJSON();
if(result.isUniqueCode) {
valid = true;
return;
} else {
valid = false;
return;
}
},
parameters: { dictionaryCode: $(element.getId()).value }
});
}
分享到:
- 2008-11-03 16:33
- 浏览 1760
- 评论(0)
- 论坛回复 / 浏览 (0 / 1893)
- 查看更多
相关推荐
ext_表单提交_数据校验 ext_表单提交_数据校验
codepress 作为ext的一个组件 实现在线的代码编辑器 具有代码高亮 在线编辑器源码 在线代码编辑器源码
这个是扩展自Ext.form.TriggerField的代码,很好用的,分享下
Ext grid 动态添加字段、列扩展, 如何动态添加或者删除一个grid的列
ext校验日期统一处理方法,可以使用此方式一次性处理好时间段校验问题
ext 扩展子列表头 ,列表头分层 ,例子分了三层 ,打开 ANSTS01 即可
Ext组件扩展包 - DateTime,非常实用漂亮的日历组件,希望大家喜欢。
Ext扩展控件,支持复制,粘贴,剪切 ext plugin Copy Paste cut
ext扩展_Flash表单上传组件 一个不错的上传组件
Openlayers扩展插件ol-ext ,2022年4月版本
Ext扩展dateField时间控件,可以选择年月日、年月、年、月
简单的Ext 富客户端实现 简单的Ext 富客户端实现 简单的Ext 富客户端实现
Ext扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxy
Ext slider扩展以级范例代码----下载不扣分,回帖加1分,欢迎下载,童叟无欺Ext slider扩展以级范例代码----下载不扣分,回帖加1分,欢迎下载,童叟无欺Ext slider扩展以级范例代码----下载不扣分,回帖加1分,欢迎...
Ext GridPanel 中实现加链接操作 Ext GridPanel 中实现加链接操作 Ext GridPanel 中实现加链接操作
ext 嵌入editarea 实现代码 源代码 代码高亮 显示 ext 嵌入editarea 实现代码 源代码 代码高亮 显示 ext 嵌入editarea 实现代码 源代码 代码高亮 显示 ext 嵌入editarea 实现代码 源代码 代码高亮 显示
parsii-ext 扩展parsii,支持求解一元一次方程
ol-ext插件,具体实现过程见使用openlayers的扩展插件实现矢量图层的3D渲染
自己扩展的异步分页bbar,对大数据量表的查询很有帮助
直接放到tomcat下.访问iconcombo.html页面 用的的文件名称如下:iconcombo.html js/Ext.ux.IconCombo.js css/Ext.ux.IconCombo.css