2015-04-06 74 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