Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 键入内容后需要在文本编辑器中调整字段_Javascript_Jquery_Html_Nicedit - Fatal编程技术网

Javascript 键入内容后需要在文本编辑器中调整字段

Javascript 键入内容后需要在文本编辑器中调整字段,javascript,jquery,html,nicedit,Javascript,Jquery,Html,Nicedit,所以我正在做一个文本编辑器,但我需要做的是 1) 当我输入说“Col1”时,在我按空格键后,它会自动完成为“column1” 我不熟悉HTML和Js,看到了一些关于onkeyup和monitor事件的示例,但它似乎不适合,否则我可能会出错 任何帮助都将不胜感激 顺便说一句,使用NicEdit作为基础 我的HTML 自定义文本编辑器 通过调用nicEditors.allTextareas()函数,下面的示例使用nicEditors替换页面上的所有3个文本区域。niceditor将使编辑器窗口的

所以我正在做一个文本编辑器,但我需要做的是

1) 当我输入说“Col1”时,在我按空格键后,它会自动完成为“column1”

我不熟悉HTML和Js,看到了一些关于onkeyup和monitor事件的示例,但它似乎不适合,否则我可能会出错

任何帮助都将不胜感激

顺便说一句,使用NicEdit作为基础

我的HTML


自定义文本编辑器
通过调用nicEditors.allTextareas()函数,下面的示例使用nicEditors替换页面上的所有3个文本区域。niceditor将使编辑器窗口的大小与其替换的文本区域的大小相匹配。

onDomLoaded(函数(){nicEditors.allTextAreas()}); 富文本
第二文本区 一些初始内容在这个文本区域
第三文本区 文本区域中的HTML内容默认值 函数myFunction(){var x=document.getElementById(“a”).value;document.getElementById(“abc”).innerHTML=x;}
我稍微更改了一下代码,开始键入,然后按向下键和tab键 您可以使用jqueryui来实现这一点

$(函数(){
var项目=[
{
值:“Column1”,
标签:“col1”
},
{
值:“第2列”,
标签:“col2”
},
{
值:“第3列”,
标签:“col3”
}
];
$(“文本区域”).autocomplete({
最小长度:0,
资料来源:项目,
焦点:功能(事件、用户界面){
$(this.val)(ui.item.label);
返回false;
},
选择:功能(事件、用户界面){
//$(“textarea”).val(ui.item.label);
$(this.val)(ui.item.value);
返回false;
}
})
} );

自定义文本编辑器
通过调用nicEditors.allTextareas()函数,下面的示例使用nicEditors替换页面上的所有3个文本区域。niceditor将使编辑器窗口的大小与其替换的文本区域的大小相匹配。

富文本
第二文本区 一些初始内容在这个文本区域
第三文本区 文本区域中的HTML内容默认值 函数myFunction(){var x=document.getElementById(“a”).value;document.getElementById(“abc”).innerHTML=x;}
我稍微更改了一下代码,开始键入,然后按向下键和tab键 您可以使用jqueryui来实现这一点

$(函数(){
var项目=[
{
值:“Column1”,
标签:“col1”
},
{
值:“第2列”,
标签:“col2”
},
{
值:“第3列”,
标签:“col3”
}
];
$(“文本区域”).autocomplete({
最小长度:0,
资料来源:项目,
焦点:功能(事件、用户界面){
$(this.val)(ui.item.label);
返回false;
},
选择:功能(事件、用户界面){
//$(“textarea”).val(ui.item.label);
$(this.val)(ui.item.value);
返回false;
}
})
} );

自定义文本编辑器
通过调用nicEditors.allTextareas()函数,下面的示例使用nicEditors替换页面上的所有3个文本区域。niceditor将使编辑器窗口的大小与其替换的文本区域的大小相匹配。

富文本
第二文本区 一些初始内容在这个文本区域
第三文本区 文本区域中的HTML内容默认值 函数myFunction(){var x=document.getElementById(“a”).value;document.getElementById(“abc”).innerHTML=x;}
因为您使用的是nicEdit所以无法将函数onkeydown=“myFunction(this,event)”附加到textarea name=“area1”元素

这是因为nicEdit会更改您的DOM并创建一个div contenteditable,所有这些都在其中运行

因此,您可以将keydown事件委托给父divsample

document.getElementById('sample').addEventListener('keydown', function(e) {
   if (e.target.tagName == 'DIV' && e.target.classList.contains('nicEdit-main')) {
       e.stopPropagation();
       myFunction(e.target, e);
   }
});
对于您的myFunction,您可以使用不同的方法获取插入符号位置、更改文本和更新

例如:

函数myFunction(obj,e){
//按下键
var charCode=e.keyCode | | e.which;
//将keycode转换为char
var charStr=String.fromCharCode(charCode);
//如果一个空间
如果(charStr==''){
//获取文本区域内的当前位置
var startPoint=window.getSelection().anchorOffset;
var node=window.getSelection().anchorNode;
//检查前4个字符是否为Col1
if(node.nodeValue.substr(startPoint-4,4)='Col1'){
//放弃按下的空格
e、 预防默认值();
//调整文本
node.nodeValue=node.nodeValue.substr(0,起始点-1)+“umn 1”+node.nodeValue.substr(起始点);
obj.focus();
var range=document.createRange();
range.setStart(节点,起始点+4);
range.setEnd(节点,起始点+4);
var sel=window.getSelection();
选择removeAllRanges();
选择添加范围(范围);
}
}
}
bkLib.ondomload(函数(){
nicEditors.allTextAreas()
});
document.getElementById('sample').addEventListener('keydown',函数(e){
如果(e.target.tagName=='DIV'&&e.target.classList.contains('nicEdit-main')){
e、 停止传播();
myFunction(e.target,e);
}
});

通过调用nicEditors.allTextareas()函数,下面的示例用
好编辑。niceditor将使编辑器窗口的大小与其替换的文本区域的大小相匹配。

富文本
第二文本区 一些初始内容在这个文本区域
第三文本区 文本区域中的HTML内容默认值
因为您使用的是nicEdit所以无法将函数onkeydown=“myFunction(this,event)”附加到textarea name=“area1”元素

这是因为nicEdit会更改您的DOM并创建一个div contenteditable,所有这些都在其中运行

所以,