如何根据服务器响应显示文本字段验证的错误消息

时间:2015-04-06 06:47:42

标签: ajax extjs extjs3

我有textfield必须根据用户输入进行验证。通过验证我的意思是,我需要检查数据库中是否存在该名称,如果存在,则显示相应的错误消息。

我是如何做到这一点的,我有一个change listener用于text box,在听众中我有ajax request连接到java action并检查是否有名字已存在于db中,并发送回response。在ajax success上,我正在尝试set error message ...但错误消息未设置..

{
                        fieldLabel : 'Company Name:',
                        xtype : 'textfield',
                        required: true,
                        allowBlank : false,
                        name : 'companyName',
                         msgTarget: 'side',
                        listeners : {
                            change : function(th,n,o) {
                            console.log("change-EV");
/*****ajax request here****/
                            this.markInvalid('N.V..!');
                //          this.setActiveError('NV..',false);
                            },
                            blur: function(th){
                                console.log("Blur-ev");
                            }
                        }
                    }

我使用的方法是对的吗?我能用ajax请求实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

如果您正在使用textfield的更改事件,那么每次输入的字母都会被触发

如果你使用模糊,那么移动到其他元素时会被触发 根据我对你的问题的理解你应该使用模糊事件

因为模糊触发了ajax调用以进行检查,如果存在国家名称则从服务器端抛出异常,它将无法通过ajax调用

所以你可以在ajax失败回调中显示错误信息

答案 1 :(得分:0)

我想您正在尝试为每个输入的字母调用Ajax, 是对的吗 ?因为这可能是服务器上的大量开销。我们可以使用组合框与绑定到组合框的商店中的名称列表,然后根据前面的类型进行过滤,只需使用store.filterBy()过滤商店中的值。