Javascript 插入符号在文本区域中的行之间移动时触发事件
如果用户更改插入符号所在的行(例如,单击或使用上/下箭头),有没有办法让textarea触发事件?或者这在Javascript中是不可能的?我找到了查找/设置插入符号当前位置的方法,但这不是我需要的…听起来您需要为文本区域注册几个事件。在我的头顶上,有一个单击事件和一个具有多个键码值的按键事件。您需要使用纯javascript,还是有一些javascript库可以利用 您需要注册事件的帮助吗?或者,在某个事件中,您是否需要帮助查找插入符号位置?(见安迪的链接)还是我两个问题的答案都是“是”Javascript 插入符号在文本区域中的行之间移动时触发事件,javascript,events,textarea,Javascript,Events,Textarea,如果用户更改插入符号所在的行(例如,单击或使用上/下箭头),有没有办法让textarea触发事件?或者这在Javascript中是不可能的?我找到了查找/设置插入符号当前位置的方法,但这不是我需要的…听起来您需要为文本区域注册几个事件。在我的头顶上,有一个单击事件和一个具有多个键码值的按键事件。您需要使用纯javascript,还是有一些javascript库可以利用 您需要注册事件的帮助吗?或者,在某个事件中,您是否需要帮助查找插入符号位置?(见安迪的链接)还是我两个问题的答案都是“是” 编
编辑 好的,从你的评论来看,你对jquery没问题,fieldselection插件阻止你重新发明轮子
$(document).ready(function(){
var currentLine = -1;
$("#textAreaID").on("keypress", function(evt){
if(evt.which === 40 || ...){
//down arrow key, enter key, page down key, all will move the caret to a newline
$(this).trigger("newline");
}else{
//a ton of text in a fixed width textarea will move the cursor to a newline
$(this).trigger("checkForNewline");
}
}).on("click checkForNewline", function(evt){
var jqElem = $(this);
//fieldSelection plugin call
var range = jqElem.getSelection();
if(range["row"] && range["row"] !== currentLine){
currentLine = range["row"];
jqElem.trigger("newline");
}else{
var handTypedNewlines = jqElem.val().split(/\r\n|\r|\n/);
var userTypedRowcounts = Math.floor(wholeString.length / jqElem.cols) + (handTypedNewlines instanceof 'object')?handTypedNewlines.length:0;
if(userTypedRowcounts != currentLine){
currentLine = userTypedRowcounts;
jqElem.trigger("newline");
}
}
}).on("newline", function(evt){
// do your work, caret is on a newline.
});
});
引用堆栈溢出
可能与@AndyE重复\n与用户在文本区域中看到的一行有很大区别。例如,这条评论没有一行换行,但我已经在文本区的第三行:)@Esailija:OP不够具体,我们不能说,但值得标记一下,以防他正在寻找。这就是为什么评论说“可能重复…”的原因。很抱歉含糊不清。我是说“\n”。不,我不相信我的问题是“查找当前行的值”问题的重复:我需要一些能够触发事件并改变页面内容的东西,以响应用户移动到另一行。我为我的问题中的任何愚蠢道歉:我几乎是一个全新的wrt Javascript新手,虽然我在其他语言方面经验丰富。事实上,我问这个主要是为了在我花更多时间学习Javascript之前看看这是否可行。这里是jQuery fieldselection插件的一个示例,请参见上面我的评论。。。所以,这听起来应该是可行的,方法是跟踪点击和按键,然后比较上一行和当前行,看看是否有变化?一旦我看到了策略,我应该能够弄明白。是的,我对图书馆没有异议。我几乎肯定会在项目的其他方面使用jQuery(如果我选择作为一个webapp…@dinkorlitz)查看我对我认为需要做的事情所做的编辑。太棒了!谢谢我会把你的代码留着,等我开始做这个项目的时候。