我有一个文本区域,我需要检测是否'+'后面跟着每个新行开头的空格字符。我可以在keyDown事件上获取keyCode,但是这将返回keyCode,即使该字符是出现在string的中间。只有当特定字符组合位于文本区域中新行的开头时才需要调用函数。可以任何人建议我如何执行此操作吗?
答案 0 :(得分:1)
当用户将字符串+
和(space)
放入textarea并检查它的位置时,您需要拦截。
您可以查看最后一个数字键的以前的字符,所以:
space
(因为这是您要查找的序列的最后一个字符)newLine (\n)
,后跟字符串"+ "
$("#test").keydown(function(e){
if(e.key==' ')
console.log(startsWith(e.target, '\n+'));
});
/*
Returns true when:
- text in 'target' starts with 'exp'
- starting by current cursor position
*/
function startsWith(target, exp){
var expLen = exp.length;
var str = $(target).val();
if(target.selectionStart > expLen){
str = $(target).val();
} else {
if("\n" + $(target).val() == exp){
return true;
}
}
var start = target.selectionStart - expLen;
var subStr = $(target).val().substr(start, expLen);
if(subStr==exp) {
return true;
} else {
return false;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="test"></textarea>
注意: 我添加了以下条件
if(target.selectionStart > expLen){
str = $(target).val();
} else {
if("\n" + $(target).val() == exp){
return true;
}
}
在textarea文本的开头找到“+”表达式。
我希望它可以帮到你。再见。