kindeditor 编辑器问题,急急急

DiscussQuestions 2010-03-25 10:59:48
现在我使用的是kindeditor-3.4,
我用的是一个form表单,我想要让ctrl + enter的时候提交form表单,为什么总是不行
高手,帮帮忙,急急急!

<form id="myform" name="myform" action="updateboard.aspx" method="post" target="actionframe" onsubmit="if(check())this.submit();" onkeydown="javascript:ctrlEnter(event);">
<div class="editor">
<textarea id="context" name="context" cols="20" rows="5" style="width: 95%; height: 300px; visibility: hidden;"></textarea>
</div>
</form>



kindeditor-3.4的js和css都已引用,ctrlEnter(event)函数绝对正确!
在线等待
...全文
240 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
accp206 2010-03-26
  • 打赏
  • 举报
回复
并非完全是焦点的问题(document的onkeydown事件跟其内HTML元素的焦点无关)。

跟小梁详细了解情况之后,阅读了KE的源代码。
简单地说,KE会创建一个iframe作为编辑区域。所以,需要给该iframe的document添加onkeydown事件的处理。——其实很简单,呵~

有两种解决方案(思路是一样的,只是代码所放置的位置不同而已):
1、修改KE的源代码(一劳永逸,但要略微复杂一些:因为需要通过额外的代码告之其所要提交的表单)
2、更简单的实现,是在每个使用KE的页面添加window.onload事件处理,示例代码如下:

<form name="example" method="post" action="..." onsubmit="alert('即将提交表单!');">
...(中间内容省略)
</form>
<script type="text/javascript">
function ctrlEnter( e )//注意:只提供思路。以下代码在IE7中测试成功。小梁自个儿去解决跨浏览器的问题哦~
{
if( e.ctrlKey && e.keyCode==13 )
{
var theForm = document.example;
var ok = theForm.onsubmit();//因为submit()不会引发onsubmit事件,所以手动调用
if( ok != false ) theForm.submit();
}
}

window.onload = function(){
var o = KE.g["content1"].iframeDoc;
KE.event.add( o, "keydown", ctrlEnter);
};
</script>
jshi123 2010-03-26
  • 打赏
  • 举报
回复
页面上只有输入焦点的控件才会响应onkeydown事件,如果你在编辑的时候按ctrl-enter,输入焦点在textarea,不会被form的onkeydown事件处理
accp206 2010-03-26
  • 打赏
  • 举报
回复
跟楼主详谈之后,发现实际情况有点复杂。

当我之前的回帖啥都没说哦,
小弟现丑了……各位哥们别骂我呵~
accp206 2010-03-26
  • 打赏
  • 举报
回复
之前说得太简单,详细点吧。呵~
应该说有两种解决方法:
1、处理每个表单元素的onkeydown(太麻烦)
2、处理document的onkeydown(推荐)

第2种解决方法参考代码(在IE中通过测试。没装FireFox,留给小梁自己去测试吧。应该没问题。呵~):

<html>
<head>
<script type="text/javascript">
function t( e )
{
var r = e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13);
if( r )
{
alert("您按了Ctrl+Enter,即将提交表单……");
document.frmTest.submit(); //将不再引发表单的onsubmit事件,所以,此句之前先做表单有效性验证
}
}
/*
//可用下边的JS实现事件处理,也可直接写在<body>中,二者任选其一
document.onkeydown = function(){
t( event );
}
*/
</script>
</head>
<body onkeydown="t( event );">
<form name="frmTest" action="#" onsubmit="alert('ok');">
<input type="text" /><br>
<input type="text" />
</form>
</body>
</html>
accp206 2010-03-26
  • 打赏
  • 举报
回复
试试document的onkeydown事件。

BTW:onsubmit事件,你的这种写法不推荐。
DiscussQuestions 2010-03-25
  • 打赏
  • 举报
回复

function ctrlEnter(e)
{
var ie = (navigator.appName == "Microsoft Internet Explorer")? true : false;
if(ie)
{
if(event.ctrlKey && event.keyCode == 13)
{
if(check())
$("myform").submit();
}//if
}
else
{
if(isKeyTrigger(e,13,true))
{
if(check())
$("myform").submit();
}//if
}
}


这个是ctrl + enter的代码,关键问题是,都检测不到ctrl+enter的onkeydown事件
porschev 2010-03-25
  • 打赏
  • 举报
回复
ctrl + enter的function帖出来。。
kkbac 2010-03-25
  • 打赏
  • 举报
回复
kindeditor 里面有没有也适用ctrl+enter键做其他事情,比如换行啥的, 引起冲突导致你设置的不生效?
丰云 2010-03-25
  • 打赏
  • 举报
回复
代码不全,无法判断
马老虎 2010-03-25
  • 打赏
  • 举报
回复
么用过这个编辑器。帮顶

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧