Как удалить разрывы строк в IE с помощью Javascript? - PullRequest
3 голосов
/ 16 сентября 2011

Я пытаюсь удалить разрывы строк с помощью JavaScript. Он работает во всех браузерах, кроме Internet Explorer (проверено в ie7, ie8). Я прочитал много постов, но не смог найти решение проблемы.

Var someText = "Here’s your text.\n It has line breaks that need to be removed.\rUsing Javascript.\r\n"; 

someText = someText.replace(/(\r\n|\n|\r)/gm,"");

Что еще можно попробовать?

* РЕДАКТИРОВАНИЕ *****

Вот еще код и лучшее объяснение моей проблемы:

function checkLength(fn) {
    var fn = document.getElementById(fn);
    var fnb = fn.value;
    var fnb = fnb.replace(/(\r\n|\n|\r)/gm,"");
    var len = fnb.length;
    ...

То, что я пытаюсь сделать, это вычислить количество символов в текстовой области. Мне приходилось рассчитывать как с Javascript, так и с PHP, и из-за разрывов строк PHP и Javascript никогда не приходили к одному и тому же числу. При удалении разрывов строк это все хорошо, кроме как в Internet Explorer (когда я вычисляю его с помощью Javascript). fnb.replace ничего не меняет в Internet Explorer для количества символов, поэтому я уверен, что он не удаляет переносы строк правильно. Во всех других браузерах это нормально, я вижу разницу в счетчике после удаления разрывов строк в javascript. Только в том, что это ничего не меняет. Я попробовал несколько вещей, а также ваши предложения ниже и количество символов до удаления переносов строк и после того же самого в ie.

///////// МОЙ ОТВЕТ //////////////////////////////////////// /

function checkLength(fn) {
    var fn = document.getElementById(fn);
    var fnb = fn.value;
    var fnb = fnb.replace(/(\r\n|\n|\r)/gm,"");
    var len = fnb.length;
...

Как сказал Томалак, моя логика может быть улучшена - извините за то, что вы новичок в JavaScript и программировании. Возможно, Томалак не делает никаких ошибок, но я уверен, что все остальные делают. Мы должны делать ошибки, чтобы учиться.

Internet Explorer не понравился

var fn = document.getElementById(fn);
var fnb = fn.value;

Мне пришлось изменить его на:

var fnb = document.getElementById(fn).value;

Даже если это не было логично, это должно было сработать. Это работало во всех браузерах, кроме ie. Это ошибка.

Это был ответ, который я искал.

Ответы [ 3 ]

1 голос
/ 16 сентября 2011

Попробуйте это:

someText = someText.replace(/[\r\n]+/gm,"");
0 голосов
/ 16 сентября 2011

Вам не нужен флаг m, но вы должны заменить вместо него пробел.

someText = someText.replace(/[\r\n]+/g,' ');
0 голосов
/ 16 сентября 2011

На самом деле, регулярное выражение прекрасно работает по крайней мере в IE8.0.

Реальная проблема в том, что вы написали Var вместо var;Firefox позволяет вам сойти с рук, но IE нет.

...