Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вставка тегов в сообщение
 
 автор: Buhen   (13.07.2007 в 22:49)   письмо автору
 
 

Как сделать так что при выделении текста и затем при нажатии на кнопку теги не просто вставлялись после текста а по бокам (например Проба а не Проба[b][/b]) Как доделать скрипт?
Вот мой код:

<FORM METHOD=POST NAME="q" id="q" ACTION=
<?
$query="SELECT * FROM news WHERE id_news=".addslashes($_GET['id_news'])."";
$result=mysql_query($query) or die("Неправильный запрос : " . mysql_error());
$row = mysql_fetch_object ($result);
echo "index.php?page=add_comment&id_news=".$row->id_news."";
?>
>
<TABLE width="97%" border="1" cellpadding="0" cellspacing="0">
<TR>
<TD>
<H3>Оставить комментарий</H3>
</TD>
<TD>
<input type="button" value="B" onclick="document.q.comment.value+='<B></B>'">
<input type="button" value="i" onclick="document.q.comment.value+='<I></I>'">
<input type="button" value="u" onclick="document.q.comment.value+='<U></U>'">
</TD>
</TR>
<TR>
<TD>Комментарий</TD>
<TD align="center">
<TEXTAREA ROWS="5" COLS="30" NAME="comment" VALUE="" id="comment"></TEXTAREA>
</TD>
</TR>
<TR>
<TD colspan="2"><p align="center"><INPUT TYPE="submit" VALUE="Добавить комментарий"></TD>
</TR>
</TABLE>
</FORM>

   
 
 автор: bronenos   (13.07.2007 в 23:07)   письмо автору
 
   для: Buhen   (13.07.2007 в 22:49)
 

можете посмотреть мою в этом плане

/* Получение выделенного текста элемента */
function getSelection (obj)
{
  /* Начальные значения, пусты */
  var data = ['', '', ''];

  /* Если Internet Explorer или Opera */
  if (!is_ff)
  {
    var sel = document.selection.createRange();
    data[1] = sel.text;
  }

  /* Если FireFox */
  else
  {
    /* Получаем границы текста */
    var text = obj.value;
    var start = obj.selectionStart;
    var end = obj.selectionEnd;

    /* И сохраняем текст */
    data[0] = text.substring (0, start);
    data[1] = text.substring (start, end);
    data[2] = text.substring (end, text.length);
  }

  /* Возвращаем результат */
  return data;
}

/* Вставка bb кодов */
function bbcode (type, value)
{
  var input = document.mymsg.text;

  /* Получаем выделенный текст */
  var text = getSelection (input);

  /* Если текст есть */
  if (text[1].length > 0)
  {
    output = text[1];

    /* Оборачиваем его тегами */
    if (type == 'color')
      output = '[color=' + value + ']' + text[1] + '[/color]';
    if (type == 'bb')
      output = '[' + value + ']' + text[1] + '[/' + value + ']';
    if (type == 'face')
      output = '[face=' + value + ']' + text[1] + '[/face]';
    if (type == 'size')
      output = '[size=' + value + ']' + text[1] + '[/size]';

    /* Возвращаем в поле */
    if (!is_ff)
      sel.text = output;
    else
      input.value = text[0] + output + text[2];
  }

  /* Если текста нет, то просто дописываем теги в конец поля */
  else
  {
    if (type == 'color')
      input.value += '[color=' + value + '][/color]';
    if (type =="bb")
      input.value += '[' + value + '][/' + value + ']';
    if (type == 'face')
      input.value += '[face=' + value + '][/face]';
    if (type == 'size')
      input.value += '[size=' + value + '][/size]';
  }

  /* Наводим фокус */
  input.focus();

  /* И делаем проверку поля */
  check_field();
}


только вместо if (!is_ff) поставить наверное следует if (document.selection)

   
 
 автор: Buhen   (14.07.2007 в 09:04)   письмо автору
 
   для: bronenos   (13.07.2007 в 23:07)
 

А в моем то случае как сделать ? покажите на примере моей формы. Довольно таки непростой код!

   
 
 автор: bronenos   (14.07.2007 в 09:21)   письмо автору
 
   для: Buhen   (14.07.2007 в 09:04)
 

я и комментарии поставил и копировал только нужное
трудно разобраться или чего то не понимаете?

   
 
 автор: Buhen   (14.07.2007 в 09:26)   письмо автору
 
   для: bronenos   (14.07.2007 в 09:21)
 

Как то к моему коду привязать? с java скриптом сложно разобраться!

   
 
 автор: bronenos   (14.07.2007 в 09:32)   письмо автору
 
   для: Buhen   (14.07.2007 в 09:26)
 

ну посмотрите на условия что делается при type равном size color face и bb и измените строчку
var input = ...
и вызывайте bbcode('bb', 'i') например

   
 
 автор: Buhen   (14.07.2007 в 09:32)   письмо автору
 
   для: Buhen   (14.07.2007 в 09:26)
 

Я нашел решение. Эту тему в топку.

   
 
 автор: bronenos   (14.07.2007 в 09:41)   письмо автору
 
   для: Buhen   (14.07.2007 в 09:32)
 

вы скорее не нашли решение, а вам его преподнесли на блюдечке с ложечкой, я лишь не дал ложечку а предложил самому ее взять

   
 
 автор: Buhen   (14.07.2007 в 09:51)   письмо автору
 
   для: bronenos   (14.07.2007 в 09:41)
 

Все равно спасибо. Главное чтобы скрипт был прост и удобен и выполнял все надлежащие ему функции. Я заглянул в поиск и там нашел готовый код. А вам большое спасибо. Просто скрипт который я нашел в 3 раза короче и понятней для меня а по функциональности не уступает вашему.
С уважением

   
 
 автор: bronenos   (14.07.2007 в 09:56)   письмо автору
 
   для: Buhen   (14.07.2007 в 09:51)
 

был бы признателен если бы вы тогда выложили его здесь
поглядеть на него

   
 
 автор: Buhen   (14.07.2007 в 09:57)   письмо автору
 
   для: bronenos   (14.07.2007 в 09:56)
 

Вот он:

<script type="text/javascript">
function insertext (x)
{
document.forms.form1.content.focus ();
var sel = document.selection.createRange ();
var selt = sel.text;
sel.text = '[' + x + ']' + selt + '[/' + x + ']';
}
</script>

<form method="post" name="form1">
<table class="td" style="width: 345px; bottom: 100" border=1>
<tr>
<td>
<input type="button" onclick="insertext ('b')" value="B" title="Жирный" style="font-weight: bold" /> |
<input type="button" onclick="insertext ('u')" value="U" title="Подчеркнутый" style="text-decoration: underline" /> |
<input type="button" onclick="insertext ('i')" value="I" title="Курсивом" style="font-style: italic" /> |
<input type="button" onclick="insertext ('color')" value="Color" title="Цветной" /> |
<input type="button" onclick="insertext ('url')" value="URL" title="Ссылка" /> |
<input type="button" onclick="insertext ('img')" value="Image" title="Картинка" />
</td></tr>
<tr><td><textarea cols="60" rows="10" name="content"></textarea></td></tr>
<tr><td><input type="submit" value="Ответить" title="Комментировать" /></td></tr>
</table>
</form>

   
 
 автор: bronenos   (14.07.2007 в 10:08)   письмо автору
 
   для: Buhen   (14.07.2007 в 09:57)
 

тут вы малость ошиблись
мой еще позволяет вставлять размер, цвет и шрифт и адаптирован под FireFox тоже и при отсутствии выделения вставляет их в конец текста

поэтому и размер такой, хотя я и знаю как его уменьшить
это не хвастовство, просто подметил
ну, каждому свое в общем
нашли выход - и хорошо

   
 
 автор: Buhen   (14.07.2007 в 10:11)   письмо автору
 
   для: bronenos   (14.07.2007 в 10:08)
 

Захотелось опробывать ваш скрипт. Я не силен в ява скриптах. Хорошо. Ваш скрипт лучше ну а как привязать мой первый скрипт в теме с вашим напишите все чтоб работало . Буду признателен.

   
 
 автор: bronenos   (14.07.2007 в 10:20)   письмо автору
 
   для: Buhen   (14.07.2007 в 10:11)
 

первую строчку bbcode функции изменить на
var input = document.q.comment;
и на кнопках вызывать
onClick="bbcode('bb', 'i')" например

   
 
 автор: Buhen   (14.07.2007 в 10:38)   письмо автору
 
   для: bronenos   (14.07.2007 в 10:20)
 

НЕ работает!

<SCRIPT LANGUAGE="JavaScript">
<!--

/* Получение выделенного текста элемента */
function getSelection (obj)
{
/* Начальные значения, пусты */
var data = ['', '', ''];

/* Если Internet Explorer или Opera */
if (!is_ff)
{
var sel = document.selection.createRange();
data[1] = sel.text;
}

/* Если FireFox */
else
{
/* Получаем границы текста */
var text = obj.value;
var start = obj.selectionStart;
var end = obj.selectionEnd;

/* И сохраняем текст */
data[0] = text.substring (0, start);
data[1] = text.substring (start, end);
data[2] = text.substring (end, text.length);
}

/* Возвращаем результат */
return data;
}

/* Вставка bb кодов */
function bbcode (type, value)
{
var input = document.q.comment;
/* Получаем выделенный текст */
var text = getSelection (input);

/* Если текст есть */
if (text[1].length > 0)
{
output = text[1];

/* Оборачиваем его тегами */
if (type == 'color')
output = '[color=' + value + ']' + text[1] + '[/color]';
if (type == 'bb')
output = '[' + value + ']' + text[1] + '[/' + value + ']';
if (type == 'face')
output = '[face=' + value + ']' + text[1] + '[/face]';
if (type == 'size')
output = '[size=' + value + ']' + text[1] + '[/size]';

/* Возвращаем в поле */
if (!is_ff)
sel.text = output;
else
input.value = text[0] + output + text[2];
}

/* Если текста нет, то просто дописываем теги в конец поля */
else
{
if (type == 'color')
input.value += '[color=' + value + '][/color]';
if (type =="bb")
input.value += '[' + value + '][/' + value + ']';
if (type == 'face')
input.value += '[face=' + value + '][/face]';
if (type == 'size')
input.value += '[size=' + value + '][/size]';
}

/* Наводим фокус */
input.focus();

/* И делаем проверку поля */
check_field();
}
//-->
</SCRIPT>
<FORM METHOD=POST NAME="q">
<TEXTAREA ROWS="5" COLS="30" NAME="comment"></TEXTAREA>
<input type="button" onClick="bbcode('bb', 'i')" value="B">
</FORM

   
 
 автор: bronenos   (14.07.2007 в 10:49)   письмо автору
 
   для: Buhen   (14.07.2007 в 10:38)
 

1. я говорил заменить
if (!is_ff) на if (document.selection)
2. прошу прощенья, check field в конце надо убрать

   
 
 автор: Buhen   (14.07.2007 в 10:56)   письмо автору
 
   для: bronenos   (14.07.2007 в 10:49)
 

Тег вставляется а при выделлении текста ничего не происходит! Проверьте пожалуйста!
<SCRIPT LANGUAGE="JavaScript">
<!--
/* Получение выделенного текста элемента */
function getSelection (obj)
{
/* Начальные значения, пусты */
var data = ['', '', ''];

/* Если Internet Explorer или Opera */
if (document.selection)
{
var sel = document.selection.createRange();
data[1] = sel.text;
}

/* Если FireFox */
else
{
/* Получаем границы текста */
var text = obj.value;
var start = obj.selectionStart;
var end = obj.selectionEnd;

/* И сохраняем текст */
data[0] = text.substring (0, start);
data[1] = text.substring (start, end);
data[2] = text.substring (end, text.length);
}

/* Возвращаем результат */
return data;
}

/* Вставка bb кодов */
function bbcode (type, value)
{
var input = document.q.comment;
/* Получаем выделенный текст */
var text = getSelection (input);

/* Если текст есть */
if (text[1].length > 0)
{
output = text[1];

/* Оборачиваем его тегами */
if (type == 'color')
output = '[color=' + value + ']' + text[1] + '[/color]';
if (type == 'bb')
output = '[' + value + ']' + text[1] + '[/' + value + ']';
if (type == 'face')
output = '[face=' + value + ']' + text[1] + '[/face]';
if (type == 'size')
output = '[size=' + value + ']' + text[1] + '[/size]';

/* Возвращаем в поле */
if (document.selection)
sel.text = output;
else
input.value = text[0] + output + text[2];
}

/* Если текста нет, то просто дописываем теги в конец поля */
else
{
if (type == 'color')
input.value += '[color=' + value + '][/color]';
if (type =="bb")
input.value += '[' + value + '][/' + value + ']';
if (type == 'face')
input.value += '[face=' + value + '][/face]';
if (type == 'size')
input.value += '[size=' + value + '][/size]';
}

/* Наводим фокус */
input.focus();
}
//-->
</SCRIPT>

<FORM METHOD=POST NAME="q">
<TEXTAREA ROWS="5" COLS="30" NAME="comment"></TEXTAREA>
<input type="button" onClick="bbcode('bb', 'i')" value="i">
</FORM

   
 
 автор: bronenos   (14.07.2007 в 11:21)   письмо автору
 
   для: Buhen   (14.07.2007 в 10:56)
 


<SCRIPT LANGUAGE="JavaScript">
<!--
/* Получение выделенного текста элемента */ 
function getSelection (obj) 

/* Начальные значения, пусты */ 
var data = ['', '', '']; 

/* Если Internet Explorer или Opera */ 
if (document.selection) 

sel = document.selection.createRange(); 
data[1] = sel.text; 


/* Если FireFox */ 
else 

/* Получаем границы текста */ 
var text = obj.value; 
var start = obj.selectionStart; 
var end = obj.selectionEnd; 

/* И сохраняем текст */ 
data[0] = text.substring (0, start); 
data[1] = text.substring (start, end); 
data[2] = text.substring (end, text.length); 


/* Возвращаем результат */ 
return data; 


/* Вставка bb кодов */ 
function bbcode (type, value) 

var input = document.q.comment; 
/* Получаем выделенный текст */ 
var text = getSelection (input); 

/* Если текст есть */ 
if (text[1].length > 0) 

output = text[1]; 

/* Оборачиваем его тегами */ 
if (type == 'color') 
output = '[color=' + value + ']' + text[1] + '[/color]'; 
if (type == 'bb') 
output = '[' + value + ']' + text[1] + '[/' + value + ']'; 
if (type == 'face') 
output = '[face=' + value + ']' + text[1] + '[/face]'; 
if (type == 'size') 
output = '[size=' + value + ']' + text[1] + '[/size]'; 

/* Возвращаем в поле */ 
if (document.selection) 
sel.text = output; 
else 
input.value = text[0] + output + text[2]; 


/* Если текста нет, то просто дописываем теги в конец поля */ 
else 

if (type == 'color') 
input.value += '[color=' + value + '][/color]'; 
if (type =="bb") 
input.value += '[' + value + '][/' + value + ']'; 
if (type == 'face') 
input.value += '[face=' + value + '][/face]'; 
if (type == 'size') 
input.value += '[size=' + value + '][/size]'; 


/* Наводим фокус */ 
input.focus(); 
}
//-->
</SCRIPT>

<FORM METHOD=POST NAME="q">
<TEXTAREA ROWS="5" COLS="30" NAME="comment"></TEXTAREA>
<input type="button" onClick="bbcode('bb', 'i')" value="i"> 
</FORM>


пока вносил изменения не заметил что ошибку сделал

   
 
 автор: shmel79   (22.02.2008 в 23:11)   письмо автору
 
   для: bronenos   (14.07.2007 в 11:21)
 

Скрипт вроде заработал... И добавляется в базу вместе с тегами. Но в итоге текст выводиться вместе с тегами.... текст .... В чем может быть проблема?

   
 
 автор: bronenos   (22.02.2008 в 23:36)   письмо автору
 
   для: shmel79   (22.02.2008 в 23:11)
 

Ну так надо парсить (форум регулярок, замена [b] на <b>)
P.S. Простая замена не пойдет, опасно

И кстати, тема, посмотрите, давнишняя, в старой бы и продожали

   
 
 автор: shmel79   (22.02.2008 в 23:51)   письмо автору
 
   для: bronenos   (22.02.2008 в 23:36)
 

Че-че делать... по-подробнее???

   
 
 автор: bronenos   (23.02.2008 в 00:44)   письмо автору
 
   для: shmel79   (22.02.2008 в 23:51)
 

На форуме по регуляркам посмотреть парсинг бб при выводе

   
 
 автор: shmel79   (25.02.2008 в 23:08)   письмо автору
 
   для: bronenos   (23.02.2008 в 00:44)
 

Помогите плз по этим парсингом...

не могу понять..... что да как.....

вставляю вот эту функцию в обработчик...


...
function filtering($text){
$text=str_replace("","<b>",$text);
$text=str_replace("
","</b>",$etxt);

return $text;
}

if (isset($title) && isset($description) && isset($date) && isset($text))
{
$text=filtering($text);

/* Здесь пишем что можно заносить информацию в базу */
$result = mysql_query ("INSERT INTO...


и выводит текст без тегов.... ( в чем может быть проблема?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования