主题: 怎么阻止KE在获得焦点时执行afterChange的回调函数?
作者: hugh, 发布日期: 2013-08-26 18:22:57, 浏览数: 2620

想完成的功能是,  KE的内容一改变就调用某个函数。

原先是使用afterChange的,但是有个问题,KE一获得焦点就会执行afterChange里的内容,这不是我想要的效果。

所以想问问,有没有什么方法解决?

如果实在不行,能给KE添加keydown事件也可以。

作者: 小浪子, 发布日期: 2013-08-26 21:20:54

你看看这几个参数。看哪个适合你用的。

http://www.kindsoft.net/docs/option.html#afterchange

希望能帮到你

回复
作者: hugh, 发布日期: 2013-08-27 09:54:23

回复小浪子:不行,我之前用的就是afterChange,但是编辑框在得到焦点的时候就会执行afterChange的回调函数,这个不是我想要的,我想要的是得到焦点时不执行回调函数,而在内容改变时执行回调函数。

不知道有没有什么办法~

回复
作者: hugh, 发布日期: 2013-08-27 10:33:37

想到了一个方法。

可以在创建KE时,加上一个自定义的属性,这个属性用来保存内容变更前的长度,在afterChange内加入对内容长度的判断,就可以判断出是否是因获取焦点而执行的回调函数。

代码如下:

function KindEditor_create(textarea_id) {
    var edit = KindEditor.create('#' + textarea_id, {
        themeType:'qq',
        items:[
            'bold', 'italic', 'underline', 'fontsize', 'forecolor', 'hilitecolor', 'plug-align', 'plug-order', 'plug-indent', 'source'
        ],
        minHeight:100,
        afterCreate:function () {
            $(".ke-container").attr('style', 'padding-bottom:26px;width:100%;');
        },
        beforeChangeL: -1,//不用0,是避免与KE内容为空时,长度的重复
        afterChange:function () {
        	var cl = this.beforeChangeL;
        	if(cl == -1) {//第一次得到焦点
        		this.beforeChangeL = this.text().length;
        		return;
        	}
        	if(cl == this.text().length){//第一次后得到焦点的判断
        		return;
        	}
        	this.beforeChangeL = this.text().length;
        	
               /****内容变更的处理逻辑****/
        }
    });

}
回复
作者: 小浪子, 发布日期: 2013-08-27 13:33:00
回复hugh:不错的思路。我没有试过。能不能自定义参数。
回复
发表新帖 发表回复