我正在尝试自动检测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...
但我该如何处理其他两个?
答案 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值的开头/结尾,这样也算作一个完整的行。