【问题标题】:Textarea string: limit to 1 empty line at a timeTextarea 字符串:一次限制为 1 个空行
【发布时间】: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


    【解决方案1】:
    /* this replace many empty line to one */     
    textareStringValue.replace(/\s*\n/g,"\n")
    

    【讨论】:

    • 感谢您的回答,但如果文本插入符号位于字符串的位置 0 或字符串末尾,则只能创建一个新行。它不允许在 values 之间创建新行。同样,如果在字符串的位置 0 创建了一个空行,它允许您在字符串的末尾创建一个新行,而无需删除以前的空行。如果在末尾创建第一个空行,然后在位置 0 创建一个新行,则同样如此。
    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多