我有这个代码可以在我的控件中加载值
实际换行符正在出现,所以我用以下代码替换所有换行符
/* 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中运行
请提供任何帮助
答案 0 :(得分:4)
有几个问题:
.replace
不会跨多行搜索.replace
默认情况下不会继续超过第一场比赛/n
实际上以空格开头(回车\r
字符),因此您对\n\n
的测试将从不匹配任何内容。如果您使用带有global
和multiline
标记的简单正则表达式,则可以使用:
.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' )