防止keyup换行

时间:2015-11-03 19:32:37

标签: javascript jquery

我需要在textarea中防止其他换行符。我在我的keyup函数中使用以下内容来防止这种情况。

$('textarea#tt').val($('textarea#tt').val().replace(/^(\r\n)|(\n\n)/,''));

但是如果用户持有回车键,则它无法按预期工作。我怎样才能解决这个问题?实施例

防止

The brown
          //additional line space
kettle
          //additional line space
          //additional line space

预期

The brown
kettle

1 个答案:

答案 0 :(得分:1)

您必须以同样的方式处理keypress事件,您甚至可以添加keydown事件:

$('textarea#tt').bind('keypress keyup keydown', function (e) {
    $(this).val($(this).val().
        replace(/^(\n|\r\n)+/, '').
        replace(/(\n|\r\n){2,}/g, '\n'));
});

请注意,我还修改了regex

  • 无论是\n还是\r\n;
  • ,它都会平等对待换行符
  • 它用一个替换双(三,......)换行符;
  • 使用g修饰符替换所有匹配项。对于用户将长文本粘贴到textarea并且可能包含多个双重换行符的情况,需要执行此操作;
  • 删除任意数量的初始换行符。