Я использую следующий JavaScript:
if (theSelection)
{
for (var i = 0, l = theSelection.length; i < l; i++)
{
if (theSelection[i] == '[' && theSelection[i+1] == 'q') level++;
if (theSelection[i-6] == 'q' && theSelection[i-7] == '/' && theSelection[i-8] == '[') level--;
if (level<1) tmp.push(theSelection[i]);
}
theSelection = tmp.join('');
}
... чтобы удалить вложенные кавычки из текста перед его отправкой в поле ответа, но вместо очищенных вложенных кавычек он оставляет разрывы строк. Так, например, если я процитирую сообщение от пользователя 1, в котором говорится ...
Text.
[quote="User 2"]Quote text.[/quote]
More text.
Отображается в поле ответа как ...
[quote="User 1"]Text.
More text.[/quote]
Что бы я добавил к этому javascript, чтобы либо удалить этот пробел, либо ограничить пространство между новыми строками только двумя переносами строк, чтобы окончательный текст, отображаемый в поле для ответа, выглядел как:
[quote="User 1"]Text.
More text.[/quote]
Спасибо за любую помощь.
EDIT:
Вот большой фрагмент кода:
if (theSelection)
{
for (var i = 0, l = theSelection.length; i < l; i++)
{
if (theSelection[i] == '[' && theSelection[i+1] == 'q') level++;
if (theSelection[i-6] == 'q' && theSelection[i-7] == '/' && theSelection[i-8] == '[') level--;
if (level<1) tmp.push(theSelection[i]);
}
theSelection = tmp.join('');
}
if (theSelection)
{
if (bbcodeEnabled)
{
insert_text('[quote="' + username + '"]' + '\n' + '\n' + theSelection + '[/quote]' + '\n' + '\n');
}
else
{
insert_text(username + ' ' + l_wrote + ':' + '\n');
var lines = split_lines(theSelection);
for (i = 0; i < lines.length; i++)
{
insert_text('> ' + lines[i] + '\n');
}
}
}
Я разместил ...
if (theSelection)
{
theSelection = theSelection.replace(/\n{2,}/g, "\n\n");
}
... между двумя существующими операторами if (theSelection), и это сработало замечательно. Одна остающаяся проблема все же. Удаление вложенных кавычек происходит до того, как заключенный в кавычки текст помещается в его собственные теги кавычек, а после открывающего тега кавычек добавляются два разрыва строки. Таким образом, если цитируемый пост содержал вложенную цитату перед любым исходным текстом, то текст, сгенерированный в приведенном выше коде, имеет четыре переноса строки при открытии вместо предполагаемых двух. Поэтому я думаю, что мне нужно было бы разместить ...
if (theSelection)
{
theSelection = theSelection.replace(/\n{2,}/g, "\n\n");
}
... после theSelection вставляется в свои собственные теги кавычек, и в этот момент «if (theSelection)» кажется больше не работает, и я настолько новичок в javascript, что не могу знать, как заменить «theSelection» чем-то, что будет отражать вывод предыдущего оператора «if (theSelection)». Надеюсь, в этом был хоть какой-то смысл.