删除Jquery换行符在firefox中无效

时间:2015-10-27 06:06:17

标签: javascript jquery firefox

我有这个代码可以在我的控件中加载值

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

/* 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中运行

请提供任何帮助

enter image description here

2 个答案:

答案 0 :(得分:4)

有几个问题:

    默认情况下,
  1. .replace不会跨多行搜索
  2. .replace默认情况下不会继续超过第一场比赛
  3. /n实际上以空格开头(回车\r字符),因此您对\n\n的测试将从不匹配任何内容。
  4. 如果您使用带有globalmultiline标记的简单正则表达式,则可以使用:

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

    我创建了small fiddle that demonstrates this,并且还从一行中删除了前导空格。

    正如您所看到的,我将前导\r作为可选项,因为您表明它已在其他浏览器中运行。您应该注意到,这可能是由于其他浏览器中出现了一些规范化的魔法:Windows使用\r\n而(大多数)其他平台使用\n

      

    也就是说,打印中的视觉new line是两件事:一个字符表示应该开始一个新行,一个字符告诉文本插入符号返回到线的开头(现在是一个全新的)。虽然在实践中,大多数文本处理器都需要新线,但排版中技术上正确的新线指示符都是\n\r。这在现实世界中的线条与计算机中的线条之间是一种模糊的界限。这是Windows标准,我喜欢它,因为它代表了真实的东西。另一方面,Unix和Mac OSX仅使用我喜欢的\n,因为它在概念上很容易记住\n is a new line。无论如何,你需要测试两者。

答案 1 :(得分:-1)

试一试:使用下面的正则表达式替换全局线路断路器移除器......

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