Javascript 如何检查光标是否位于文本区域内的空行上?

Javascript 如何检查光标是否位于文本区域内的空行上?,javascript,jquery,line-breaks,Javascript,Jquery,Line Breaks,如何检查光标是否位于文本区域内的空行上 我不在乎文字包装。我关心通过按Enter键创建的线 例如: 这会记录“有东西” 上面的一行记录为“空”,这一行记录为“有东西” 以下内容应该可以工作,但在旧版本的IE中不会 // on(..., function() { if( this.value.substr(0,this.selectionStart).match(/(?:^|\r?\n\s*)$/) && this.value.substr(this.selectionStart

如何检查光标是否位于文本区域内的空行上

我不在乎文字包装。我关心通过按Enter键创建的线

例如:

这会记录“有东西”

上面的一行记录为“空”,这一行记录为“有东西”

以下内容应该可以工作,但在旧版本的IE中不会

// on(..., function() {
if( this.value.substr(0,this.selectionStart).match(/(?:^|\r?\n\s*)$/)
 && this.value.substr(this.selectionStart).match(/^(?:\s*\r?\n|$)/)) {
    console.log("empty");
}

编辑搜索现在显式地查找换行符,进一步的空格是可选的。

正如我所知,javascript不可能出现换行符。换行符可能是由换行符和CR/LF生成的换行符造成的。你关心哪一个?我能想到的唯一方法(计算字符数)取决于浏览器在文本区域内使用单空格字体,这不能再保证了。@Diodeus我关心任何将光标移到空行的换行符,空行中没有任何内容或只有空格。@Diodeus我不关心换行。
this
这里指的是什么,textarea的值?它指的是绑定事件的元素。在本例中,文本区域本身。实际上,将其划掉。如果文本区域有任何文本,它将无法工作:/这是因为您更改了我的代码。。。但是关于第一行和最后一行的事情你是对的。我已经编辑了我的答案,第一个
substr
在光标之前获取所有内容,正则表达式测试以确保它以换行结束(即光标或换行之前没有文本)。第二个
substr
获取光标后的所有内容,并执行相同的检查。
// on(..., function() {
if( this.value.substr(0,this.selectionStart).match(/(?:^|\r?\n\s*)$/)
 && this.value.substr(this.selectionStart).match(/^(?:\s*\r?\n|$)/)) {
    console.log("empty");
}