jQuery换行符删除在Firefox中不起作用

乔·达利瓦(Jot Dhaliwal)

我有这段代码负责在控件中加载值

实际上出现了换行符,所以我用以下代码替换了所有换行符

/* Specific method to load values from a radio group */

load_values.radiogroup = function (ctrl_type, ctrl_id) {            // debugger;
    var form = $("#theForm");
    var div_ctrl = $("#" + ctrl_id);
    var options = '';
    var ctrls = div_ctrl.find("div").find("label");
    var radios = div_ctrl.find("div").find("input");
    ctrls.each(function (i, o) {
        options += $(o).text() + '\n';
    });
    form.find("[name=name]").val(radios[0].name)
    form.find("[name=options]").val($.trim(options.replace(/\n\n/g, "")));
}

此功能负责删除换行符,

 form.find("[name=options]").val($.trim(options.replace(/\n\n/g, "")));

但是它在Firefox中不起作用

请对此有任何帮助

在此处输入图片说明

最摇滚

有两个问题:

  1. .replace 默认情况下不会跨多行搜索
  2. .replace 默认情况下不超过第一场比赛
  3. /n实际上是空白(回车\r符),因此您的测试\n\n永远不会匹配任何内容。

如果您使用带有globalmultiline标志的简单正则表达式,则可以使用:

.replace( /(?:\r?\n)+/gm, '\n' )

我创建了一个小提琴来演示这一点,并且还删除了行中的前导空格。

如您所见,\r由于您指出它可以在其他浏览器中使用,所以我将Lead设为可选。您应该注意,这可能是由于其他浏览器发生了一些不可思议的现象导致标准化的:Windows使用\r\n和(大多数)其他平台使用\n

这就是说,视觉new line打印是两件事情:一个字符来表示一个新行应该开始了,一个字地告诉文本插入符返回线(现在是全新的一个)的开始。实际上,大多数文本处理器只需要换行,而排版中技术上正确的换行指示符既是\n\r这是现实世界中的线与计算机中的线之间的模糊线。这是Windows标准,我喜欢它,因为它代表了真实的事物。另一方面,Unix和Mac OSX仅使用\n我喜欢的内容,因为从概念上讲它很容易记住\n is a new line无论如何,您都需要对两者进行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章