2014-10-28 104 views
0

從我發現的所有示例中,如果選中複選框,則使用is(':checked')應返回true;否則返回false。在我的情況下,它在兩種情況下都返回false。我的錯誤是什麼?即使在複選框被選中時也會出錯

  { 
      xtype: 'checkbox', 
      boxLabel: 'Show message', 
      id: 'mainBox', 
      handler: function() { 
       alert($(this).is(':checked')); 

      } 
+0

哪裏是你的代碼? – hindmost 2014-10-28 13:09:34

+0

這段代碼產生了什麼?一個''或其他什麼?問題是,這是什麼? – TCHdvlp 2014-10-28 13:09:45

+0

看來你錯過了處理函數的結尾大括號。 $(this)是指什麼?請提供您的完整代碼,以便我們可以看到您想要完成的任務。謝謝。 – CodeGodie 2014-10-28 13:10:44

回答

1

由於this內部的ExtJS的事件處理程序沒有引用的DOM元素代替this將指ExtJS的複選框對象。 jQuery將無法使用extjs對象引用找出目標元素。相反,你必須複選框將返回的選中狀態值的getValue()方法,所以

嘗試

{ 
    xtype: 'checkbox', 
    boxLabel: 'Show message', 
    id: 'mainBox', 
    handler: function (el) { 
     alert(el.getValue()); 
    } 
} 
1

,你可以在jQuery文檔中讀取時,.is('...')函數返回一個jQuery對象。

如果你想要某種布爾作爲返回值的,你可以試試下面的代碼:

alert($(this).is(':checked').length > 0); 

但對於一個複選框元素,使用「選中」屬性應太:

alert(this.checked); 

你甚至可以試試這個,如果你想使用jQuery:

alert($(this).attr('checked') === 'checked'); 
3

按照到ExtJS documentation,我會嘗試這樣的:

{ 
    xtype: 'checkbox', 
    boxLabel: 'Show message', 
    id: 'mainBox', 
    handler: function (field , value) { 
     alert(value); 
    } 
} 
+0

@ user1960836這能爲你工作嗎? – CodeGodie 2014-10-29 16:23:15

相關問題