Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Смайлики и фреймЫ


Автор: windows_error 14.4.2004, 09:36
Как сделать чтобы при нажитии на смайлик в поле <input type="text" size="100" name=mesage> вставлялся текст..например (1)....

Страница разделена следующим образом:

Смайлики хранятся в файле smiles.php
Отображатся должнЫ в panel.php в
<input type="text" size="100" name=mesage>




<frameset rows="50,*,50" border="0">
<frame src="logo.php" scrolling="no">
<frameset cols="*,50,180" border="0">
<frame src="mesages.php" scrolling="yes">
<frame src="smiles.php" scrolling="yes">
<frame src="online.php" scrolling="yes">
</frameset>
<frame src="panel.php" scrolling="no" name=bottomframe>
</frameset>

Автор: Sardar 14.4.2004, 11:58
Обращаемся к текстовому полю в panel.php из фрейма smiles.php:
Код
top.frames['bottomframe'].document.forms['form_name'].elements['message'].value

Изменяя содержимое свойства value мы измеянем содержимое текстового поля.
Код
//smiles.php
function addText(txt) {
if(typeof(top.frames['bottomframe']!='undefined') { //фрейм существует
 top.frames['bottomframe'].document.forms['form_name'].elements['message'].value+=txt;
}
}
...
<img src='smile.gif' onClick='addText(":)")'>


Разработчики IE подошли с интересным решением: существует обьект http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_selection.asp?frame=false который отвечает за любую селекцию на странице. Через этот обьект можно править все, включая содержимое текстовых полей. Для этого получаем обьект TextRange и изменяем содержимое его поля text:
Код
//smiles.php
function addText(txt) {
var trgt;
if(typeof((trgt=top.frames['bottomframe']))=='undefined') return;
if(typeof(trgt.document.selection)!='undefined') { //IE compatible
 var rng=trgt.document.selection.createRange(); //создаем обьект TextRange
 if(rng.parentElement()==trgt.document.forms['form_name'].elements['message']) { //селекция(курсор) именно в текстовом поле
  rng.text=txt;
  return;
 }
}
//иначе просто добавляем текст
trgt.document.forms['form_name'].elements['message'].value+=txt;
}
...
<img src='smile.gif' onClick='addText(":)")'>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)