主题: 怎么阻止KE在获得焦点时执行afterChange的回调函数? |
作者: hugh, 发布日期: 2013-08-26 18:22:57, 浏览数: 2620 |
想完成的功能是, KE的内容一改变就调用某个函数。 原先是使用afterChange的,但是有个问题,KE一获得焦点就会执行afterChange里的内容,这不是我想要的效果。 所以想问问,有没有什么方法解决? 如果实在不行,能给KE添加keydown事件也可以。 |
作者: 小浪子, 发布日期: 2013-08-26 21:20:54 |
回复 |
作者: 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:不错的思路。我没有试过。能不能自定义参数。
|
回复 |