检测所选文本是否跨越整行或更多行

时间:2012-01-19 18:47:48

标签: javascript jquery string textarea

我正在尝试自动检测textarea的选择是否包含新行,或者是否已选择整行。

例如

  • [abc def] xyz =>应该是假的,因为只选择[abc def]
  • [abc def xyz] =>应该是真的,因为已经选择了整行。
  • 选择跨越多行(true):

     abc [def xyz
     abc def xyz
     abc def] xyz
    

这将检测最后一个案例:

var range = getTextAreaSelection(textarea),
    selection = textarea.value.substring(range[0], range[1]);

if(selection.indexOf('\n') !== -1)
  // do stuff...

但我该如何处理其他两个?

1 个答案:

答案 0 :(得分:1)

您可以查看之前/之后的字符:

textarea.value.charAt(range[0] - 1); // if it's `\r` or `\n` it's the first char of a line
textarea.value.charAt(range[1] + 1); // same fot last char of a line

如果其中一个或两个都返回一个空字符串,那么它就是textarea值的开头/结尾,这样也算作一个完整的行。