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