ext远程验证用户名是否存在

 

form的field配置项中有一个validator:somefunc,这个somefunc就是要用于这个field的自定义验证方法,但是如果要到服务器去验证某个用户名是否存在,光靠这一个函数是不好搞的!因为somefunc异步提交验证信息后,必须要到ajax的回调函数中(假设叫somecallback)才能取得返回的数据,但是不幸的是somefunc不会等到somecallback执行完再返回,而是直接就返回了,somecallback的执行就变得没有意义了。

我的做法是:
1.策略
搞一个bool类型的变量hasRegistered,对field中信息的提交放在“keyup”的时候做,而验证放在“blur”的时候做,这样可以保证在验证之前总是可以获得服务器返回的数据,根据返回的数据修改hasRegistered为true或false,验证函数只需要读取这个变量,并根据其值就行返回就行了
2.做法
添加listeners配置项,listeners:{'keyup':{fn:chkOnServer}};添加配置项validationEvent:'blur',默认是“keyup”。必须注意要让监听“keyup”起效,还需要添加配置项enableKeyEvents:true,这项在api中是查不到的,而是写在keyup事件的描述中。

编写chkOnServer方法,chkOnServer(field,_event){},field为该field的引用,_event为这次事件,还没研究过是不是js原生的event,应该会有些扩展。这个方法只做ajax请求就行了,它的回调函数为changeRegBool(response,option)。

changeRegBool的参数response为XHR对象,使用response.responseText就能得到返回的数据,根据这个数据对hasRegistered进行赋值即可。

3.搞定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值