Я хочу выполнить проверку формы на стороне пользователя с помощью JavaScript (также используется jQuery).Цель состоит в том, чтобы удалить вложенные теги bbCode [quote]
глубже, чем уровень 2. Скажем, у нас есть этот текст:
[quote=SoundMAX][quote=Laplundik][quote=SoundMAX]
blahblahblah[/quote]
blahblah
[/quote]
blah[/quote]
И получаем это:
[quote=SoundMAX][quote=Laplundik]
blahblah
[/quote]
blah[/quote]
Моя единственная идея состоит в.replace [quote]
с помощью <div>
, затем создайте объект DOM и удалите все, что глубже 2, с помощью jQuery, и проанализируйте все в обратном направлении в bbCode.Но это решение кажется слишком сложным, есть ли более элегантное?
РЕДАКТИРОВАТЬ:
Спасибо за хорошие решения.Основываясь на ответе Дарио, я сделал следующее:
var text=$('#edit-privatemsgbody').val();
var tmp=[];
var level=0;
for (var i=0,l=text.length;i<l;i++){
if(text[i]=='['&&text[i+1]=='q') level++;
if(text[i-6]=='q'&&text[i-7]=='/'&&text[i-8]=='[') level--;
if(level<3) tmp.push(text[i]);
}
alert(tmp.join(''));
Это прекрасно работает.
Но решение идеальной машины было похоже на вспышку.Я не знал о замене параметров функции обратного вызова раньше, теперь это удобно!Я с этим разберусь.