标题可能有点抽象,先说下我要干吗吧。我想做一个类型QQ那样的聊天窗体,编辑框用ckeditor,窗体用Ext.window.Window,
发送信息时,按快捷组合键CTR + ENTER,即可。
下面是一个不含ckeditor的窗体,快捷键能识别到:Ext.define("MyQQWindow",{
extend: "Ext.window.Window",
constructor: function(){
this.superclass.constructor.call(this,
{
title: "聊天窗体",
layout: "fit",
width: 555,
height: 500,
plain: true,
closeAction: "destroy",
//items: [],
keys: {
key: Ext.EventObject.ENTER,//13
ctrl: true,
scope: this,
fn: function(){
alert("不含编辑框时,能识到CTR + ENTER");
} }
});
}
});当我把ckeditor编辑器加入到MyQQWindow窗体中后,加输入的过程中,我再按CTR + ENTER,这时就没响应了,要把焦点弄到MyQQWindow上时,再按,才会有响应,这显然不是我想要的,我想在编辑文字过程中,随时按CTR + ENTER,就会有响应,不知各位大虾怎么解决这个问题?对ckeditor用得不是很熟,一时想不到解决方法,希望有做过类似的朋友提供解决方法或相关代码,多谢了。
发送信息时,按快捷组合键CTR + ENTER,即可。
下面是一个不含ckeditor的窗体,快捷键能识别到:Ext.define("MyQQWindow",{
extend: "Ext.window.Window",
constructor: function(){
this.superclass.constructor.call(this,
{
title: "聊天窗体",
layout: "fit",
width: 555,
height: 500,
plain: true,
closeAction: "destroy",
//items: [],
keys: {
key: Ext.EventObject.ENTER,//13
ctrl: true,
scope: this,
fn: function(){
alert("不含编辑框时,能识到CTR + ENTER");
} }
});
}
});当我把ckeditor编辑器加入到MyQQWindow窗体中后,加输入的过程中,我再按CTR + ENTER,这时就没响应了,要把焦点弄到MyQQWindow上时,再按,才会有响应,这显然不是我想要的,我想在编辑文字过程中,随时按CTR + ENTER,就会有响应,不知各位大虾怎么解决这个问题?对ckeditor用得不是很熟,一时想不到解决方法,希望有做过类似的朋友提供解决方法或相关代码,多谢了。
解决方案 »
- jquery load 为什么不成功?急!
- jquery插件之ingrid问题请教
- jquery datepicker 限制时间
- 遨游左下角弹出窗口
- typeof为啥在这就不显示呀?请大家帮看看,谢谢了
- 为什么alert('\u5408\u8ba1');可以得到汉字,而alert(a.value);却不能得到汉字呢?
- 在javascript的function中如何去调用执行一个action
- 从网页上DOWN个日历HTML代码
- 如何得到非表单中元件的某个属性值?
- 各位大大,我写的计算器为什么运行不出来
- 使用jstree的一点疑问.解决可加分..请高手帮帮忙.
- 客户端控件中有没有类似于gridview的控件?
http://zhidao.baidu.com/question/158043565.html这个网友的问题本质应该是一样的,应该要去配制config.js里边的代码吧,但具体怎么配置就不懂了
function keydown(e){
if(e.keyCode==13&&e.ctrlKey)alert('按下了ctrl+Enter');
}
//注册实例加载完毕事件,更多事件看这个:http://www.coding123.net/article/20121121/How-to-determine-if-CKEditor-is-loaded.aspx
CKEDITOR.on('instanceReady', function (e) {
if(e.editor.document.$.addEventListener) e.editor.document.$.addEventListener('keydown',keydown,false);
else if(e.editor.document.$.attachEvent)e.editor.document.$.attachEvent('onkeyup',function(e){keydown(e);});
刚才没认真测试,现在发现个问题啊,第二次按下时,不起作用了,不知道那里出问题,希望有空再帮忙看下那里有漏洞啊,不知道是不是我机子上的问题
function keydown(e){
if(e.keyCode==13&&e.ctrlKey)alert('按下了ctrl+Enter');
} CKEDITOR.on('instanceReady', function (e) {
if(e.editor.document.$.addEventListener) e.editor.document.$.addEventListener('keydown',keydown,false);
else if(e.editor.document.$.attachEvent)e.editor.document.$.attachEvent('onkeyup',function(e){keydown(e)});
});
不知道是不是ckeditor版本问题,我ckeditor用的是:CKEditor 3.6.6.1 (revision 7696)上面的情况是我在ext4中的测试情况,当我只用html页面来测试时,没有发现这种情况,一切正常识别,那很显然,应该是事件被ext4给拦截掉了,像我这种应用情况,不知道有没什么好的解决方法啊?有空再帮忙看下,再次感谢大侠。
下面这个代码测试正常:<!DOCTYPE html>
<html>
<head>
<title>测试</title>
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<textarea name="ckeditorContent" cols="80" rows="30"></textarea>
<script type="text/javascript">
CKEDITOR.replace('ckeditorContent');
function keydown(e){
if(e.keyCode==13&&e.ctrlKey)
alert('按下了ctrl+Enter');
}
CKEDITOR.on('instanceReady', function (e) {
if(e.editor.document.$.addEventListener)
e.editor.document.$.addEventListener('keydown',keydown,false);
else if(e.editor.document.$.attachEvent)
e.editor.document.$.attachEvent('onkeyup',function(e){keydown(e)});
</script>
</body>
</html>
我找到问题出在那里了,当我把编辑器内容清空的时候,就无效了:
CKEDITOR.instances["ckeditorContent"].setData("");//去掉这句,则能正常识别了,而我要必须要清空,比如提交什么内容,提交完就没必要留着了,这个要怎么处理呢?
经过我测试,发现,这个问题跟ext没关系了,为避免误解,我重开了个新贴,
http://bbs.csdn.net/topics/390412255
代码可直接测试,有时间再来看下,谢谢