我在Ext.tree.Panel中添加了两个侦听器'check change'和'item click'。但我注意到了, 当检查发生变化时,它也会触发项目点击事件。我希望阻止此项目点击事件。
listeners : {
checkchange: function(node, checked, eOpts){
alert('this is check change');
},
itemclick : function(obj, record, item, index, e, eOpts){
alert('this is item click');
}
}
这是Ext树中的侦听器。在检查更改时,我希望只有“这是检查更改”此警报。怎么可能?
答案 0 :(得分:1)
您可以使用事件getTarget方法来检查复选框的DOM。完整的解决方案如下:
onItemClick: function( self, record, item, index, eventObj, eOpts ) {
var colIdx = eventObj.getTarget('.x-grid-cell').cellIndex;
if (colIdx===0) { // Apply item event click to the first column only
var node=self.getTreeStore().getNodeById(record.internalId);
if (!eventObj.getTarget('.x-tree-checkbox',1,true)) {
record.set('checked',!record.get('checked'));
this.fireEvent('checkchange', node, record.get('checked'));
}
}
}
答案 1 :(得分:1)
Lame解决方案! 我能够将脚本限制为'itemclick'。 适用于ExtJs 5.1.1,可能适用于所有版本,其中css复选框类名称为'x-tree-checkbox'
if (username_exists($user)){
echo 'Username already exists. Please wait while we redirect you back to the form';
die("<meta http-equiv=\"refresh\" content=\"5;url=".$_SERVER['HTTP_REFERER']."\"/>");
}
if ( !username_exists( $user ) && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
if( !is_wp_error($user_id) ) {
//user has been created
$user = new WP_User( $user_id );
$user->set_role( 'subscriber' );
wp_mail( $to, $email_subject, $message, $headers);
//Redirect
wp_redirect( 'http://www.dev.smithhonig.com/thank-you' );
exit;
} else {
//$user_id is a WP_Error object. Manage the error
}
}
}
add_action('init','create_account');
答案 2 :(得分:0)
如果您单击复选框以更改其值,则itemclick事件将始终在checkchange事件之前触发。如果你不希望在itemclick事件上发生任何事情,只需不要定义它(删除监听器)。
答案 3 :(得分:0)
您是否尝试过实施'beforeitemclick'活动?单击该项时会触发它,在此处理程序中,您可以实现checkchange。