即使在复选框被选中时也会出错

问题描述:

从我发现的所有示例中,如果选中复选框,则使用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

由于this内部的ExtJS的事件处理程序没有引用的DOM元素代替this将指ExtJS的复选框对象。 jQuery将无法使用extjs对象引用找出目标元素。相反,你必须复选框将返回的选中状态值的getValue()方法,所以

尝试

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

,你可以在jQuery文档中读取时,.is('...')函数返回一个jQuery对象。

如果你想要某种布尔作为返回值的,你可以试试下面的代码:

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

但对于一个复选框元素,使用“选中”属性应太:

alert(this.checked); 

你甚至可以试试这个,如果你想使用jQuery:

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

按照到ExtJS documentation,我会尝试这样的:

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

@ user1960836这能为你工作吗? – CodeGodie 2014-10-29 16:23:15