dojo小例子(34)带Ajax异步验证功能的ValidationTextBox

前端之家收集整理的这篇文章主要介绍了dojo小例子(34)带Ajax异步验证功能的ValidationTextBox前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. define([
  2. "dojo/_base/declare","dijit/form/ValidationTextBox","dojo/request"
  3. ],function(declare,ValidationTextBox,request) {
  4. return declare("AjaxValidationTextBox",[ ValidationTextBox ],{
  5. ajaxUrl : null,ajaxLock : false,// 钩子,防止出现死循环
  6. ajaxResult : false,oldValue : null,// 用于对比输入值是否有变化
  7. changed : false,// 标识:输入值是否有变化
  8.  
  9. isValid : function() {
  10. var widget = this;
  11. this.changed = false;
  12.  
  13. if (this.get('value') != this.oldValue) {
  14. this.changed = true;
  15. }
  16. if (!this.ajaxLock && this.ajaxUrl && this.get('value') && !this.focused && this.changed) {
  17. this.oldValue = this.get('value');
  18. this.ajaxLock = true;
  19.  
  20. request(widget.ajaxUrl + encodeURIComponent( widget.get('value') ),{
  21. handleAs : 'text'
  22. }).then(function(result) {
  23. widget.ajaxResult = (result == "true" ? true : false);
  24. widget.validate(); // 会调用isValid方法重新校验输入的值,弹出tip
  25. widget.ajaxLock = false;
  26. });
  27. }
  28.  
  29. return this.ajaxResult;
  30. }
  31. });
  32.  
  33. });

用法

  1. <input data-dojo-type="my/AjaxValidationTextBox" data-dojo-props="
  2. required : true,missingMessage:'编号不能为空!',ajaxUrl:/rest/isNumValid/',invalidMessage:'编号已存在!'" />

猜你在找的Dojo相关文章