2015-04-06 65 views
1

显示错误消息文本框验证我有一个textfield其中有基于用户input.By验证我的意思是要验证,我需要检查,如果该名称在数据库中,如果存在它相应地存在显示错误信息。如何根据服务器响应

如何我做的这是,我对text box一个change listener,听众中我有一个ajax request它连接到一个java action和检查名称数据库已经存在,并发送回一个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请求来实现吗?

+0

Pelase通过本文中的远程过滤。 http://skirtlesden.com/articles/extjs-comboboxes-part-2。 这可以提供帮助。 – Dev 2015-04-06 10:05:46

+0

请参阅subhadip的帖子的评论,我不想使用存储滤波器用于这一目的我猜?纠正我,如果我错了 – extUser 2015-04-06 10:13:19

+0

有多少不同的值已经在数据库?如果数以百计,是否可以事先将它们下载到客户端? – 2015-04-06 23:31:33

回答

0

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

+0

不,不是每一个字母输入..只要你在文本字段中键入并移动到任何其他表单元素..更改事件将被触发。 – extUser 2015-04-06 10:03:04

+0

我的目的是在添加新项目时避免重复。比如,如果我正在创建一家新公司,那么公司的名称就是'新公司'。然后在将其添加到数据库之前,我想检查它们是否以该名称存在公司,如果存在,则显示错误,告诉'重复条目'。 – extUser 2015-04-06 10:06:30

+0

在表单提交上,您可以在服务器端验证它是否存在于数据库中,并作出相应的响应并显示响应。 – Dev 2015-04-06 10:20:32

2

如果您正在使用文本框的更改事件将会被解雇的每一个字母输入

如果使用模糊那么当你在你的情况下,转移到其他元素 按我的问题的理解会被解雇作为模糊发射进行Ajax调用的检查,如果国名存在扔从服务器端异常,你应该使用模糊事件

,它会失败Ajax调用

这样你就可以显示在阿贾克斯失败的错误信息回调

+0

更改(this,newValue,oldValue) 仅在如果字段值已更改,则字段模糊。 – extUser 2015-04-09 07:35:25

+0

我认为改变是为每个字母输入我创建了一个小提琴尝试在那里(https://fiddle.sencha.com/#fiddle/l28) – 2015-04-10 07:10:01

+0

我同意你,分机JS 5文档说,改变(this,newValue ,oldValue,eOpts) 当通过setValue方法更改字段的值时触发,但我使用的是Ext JS 3.4,其中更改事件在blur事件之前触发。 – extUser 2015-04-10 12:19:49