ExtJS 6:文本字段上的验证器无法正常工作

时间:2016-04-26 09:16:14

标签: javascript extjs

我有一个注册表单,其中包含用户名的文本字段。 对于此文本字段,我添加了一个自定义验证器函数来检查所选用户名的可用性:

                            xtype: 'textfield',
                            name: 'username',
                            msgTarget: 'under',
                            bind: {
                                fieldLabel: '{texts.username}'
                            },
                            allowBlank: false,
                            minLength: 3,
                            checkChangeBuffer: 300,
                            validator: function (value) {
                                if (value.length < 3) {
                                    return null;
                                }
                                Ext.Ajax.request({
                                    method: 'POST',
                                    url: '/rest/availability',
                                    params: {
                                        name: value
                                    }
                                }).then(
                                    function (result) {
                                        return Ext.JSON.decode(result.responseText) ? true : 'Username already exists';
                                    },
                                    function (response) {
                                        return 'Server issue.';
                                    }
                                )
                            }

这应该可以做到。但它没有。 我收到一个错误的错误,验证器显示始终无效,并且不显示消息:

textfield - user exists

当我检查响应时,我从服务器获得正确的值。 我在这里缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

为了验证通过,您需要返回true。

validator: function(value) {
   if(!valid) {
       return 'error message';
   }
   return true; // successfully passed
}