【发布时间】:2015-05-28 08:37:22
【问题描述】:
我有一个multivaluetextarea,其中每一行代表一个数组值。
如果在按下回车时存在空行,我想删除它们(我通过 angular 指令而不是按键来执行此操作)。预期结果是此时只能存在一个空行。
我正在尝试使用textareStringValue.replace(/\n{2,}/gm, '\n')。但根据新行的位置和文本插入符号的位置,替换条件会发生变化。
这可以用一个.replace(regExp) 完成吗?
app.directive('noTwolines', function () {
return {
restrict: 'A',
require: '?ngModel',
link: function (scope, element, attrs, ngModel) {
if (!ngModel) return;
ngModel.$parsers.unshift(function (inputValue) {
var digits = inputValue;
var textarea= document.getElementById("textarea");
var val = textarea.value;
var caretPos = val.slice(0, textarea.selectionStart).length;
console.log(inputValue.length);
console.log(val.slice(0, textarea.selectionStart).length);
if(caretPos === inputValue.length){
console.log('enter from end');
digits= inputValue.replace(/\n{2,}/gm, '\n');
}
if(caretPos < inputValue.length && inputValue.indexOf('\n\n') != -1){
digits= inputValue.replace(/\n{3,}/gm, '\n');
}
ngModel.$setViewValue(digits);
ngModel.$render();
return digits;
});
}
};
});
【问题讨论】:
标签: javascript html regex angularjs textarea