Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать данные со страницы на страницу 
V
    Опции темы
0Z0NE
Дата 2.5.2012, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Доброго времени суток, Уважаемые Знатоки, столкнулся со следующей задачей:

Есть страница с текстовым полем, и есть другая старница со смайлами. В интернете кое-как нарыл код:

Код

<script>
function tag_add_b(obj, str1) {
    obj.focus();
if (typeof(obj.selectionStart) == "number") {
        if (obj.selectionStart != obj.selectionEnd) {
            var start = obj.selectionStart;
            var end = obj.selectionEnd;
            s = obj.value.substr(start,end-start);
            obj.value = obj.value.substr(0, start) + str1 + s + obj.value.substr(end);
        }
        else {
            obj.value = obj.value + str1;
        }
        return true;
    }
    return false;
}
</script>
который запускается конструкцией:

Код

onClick="javascript:tag_add_b(message_send, ':aikido:')

Все отлично работает если и смайлы и текстовое поле находятся на одной странице... но мне нужно что-бы смайлы и текстовое поле находились на разных старинцах, и вот тут у меня начинаются  проблемы. Все усложняется еще и тем что до ввода смайлов со страницы может быть введен некий текст, т.е. перезагружать станицу нельзя... Помомгите пожалуйста, я совсем не знаю JS...

P.S. Спойлер не предлагать, я сначала тоже думал что спойлером будет проще но смайлов 131 штука, это серьезная нагрузка на страницу...
P.P.S. Если можно то покажите пример сего чуда...
PM MAIL   Вверх
ksnk
Дата 2.5.2012, 23:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата(0Z0NE @  2.5.2012,  23:12 Найти цитируемый пост)
Если можно то покажите пример сего чуда...

На этом форуме. нажать на кнопку "смайлы".
Не оно?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
0Z0NE
Дата 2.5.2012, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Цитата

На этом форуме. нажать на кнопку "смайлы".

Да имено оно(при переходе к всему списку смайлов)
PM MAIL   Вверх
Aliance
Дата 3.5.2012, 15:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Код

window.opener.tag_add_b(...)

PM MAIL WWW ICQ Skype   Вверх
0Z0NE
Дата 3.5.2012, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Aliance, простите но Ваш код у меня не работает... делал так:

Старница с полем ввода:

Код

<script>
function tag_add_b(obj, str1, str2) {
    obj.focus();
if (typeof(obj.selectionStart) == "number") {
        if (obj.selectionStart != obj.selectionEnd) {
            var start = obj.selectionStart;
            var end = obj.selectionEnd;
            s = obj.value.substr(start,end-start);
            obj.value = obj.value.substr(0, start) + str1 + s + str2 + obj.value.substr(end);
        }
        else {
            obj.value = obj.value + str1 + str2;
        }
        return true;
    }
    return false;
}
</script>


Код

<form action="send.php" name="send_messag" method='post'>
<a href="../chat/smiles.html" target="_blank" onClick="popupWin = window.open(this.href, 'contacts', 'location,width=400,height=400,top=0'); popupWin.focus(); return false;">Смайлы</a>
<br />
<label for="send_messag-send">
<textarea id="message_send" name='message_send' cols="50" rows="1"></textarea>
</label>
<input type='submit' value='Отправить' />

на странице со смайлами:
Код

<td onClick="javascript:window.opener.tag_add_b('message_send', ':aikido:')"><img src="smile/aikido.gif" /></td>


Что я делаю не так?
PM MAIL   Вверх
Aliance
Дата 4.5.2012, 09:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Ищите ошибку в синтаксисе, проверьте что выдает консоль. Все должно работать: http://jsfiddle.net/dUN6P/
Подробнее: http://forum.vingrad.ru/forum/topic-44559.html
PM MAIL WWW ICQ Skype   Вверх
0Z0NE
Дата 5.5.2012, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Aliance, спасибо за ссылочки, почитал, надеюсь помогло))

Кое-как добился реакции хоть от IE 6...

для этого взял скрипт "модального окна" на JS, страница в скрипте "модального окна" отображается через фрейм, вызвать добавление из "модального окна" получилось таким вот запросом...
Код

window.parent.document.getElementById('message_send').value=':aikido:'


ну уже хоть что-то, как заставить этот код работать в нормальных браузерах?)))

P.S. пробовал включить режим отладки скриптов в опере - тишина, IE так-же повенуется без всяких пререканий...

Все, дошло, заменил parent на top и опера заработала))

Все хорошо, но как вставлять смайлы в конец строки?... ибо пользователь мог уже вести в textarea сообщение ...

как выкрутится в моем случае?

Это сообщение отредактировал(а) 0Z0NE - 5.5.2012, 23:37
PM MAIL   Вверх
Aliance
Дата 10.5.2012, 10:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Если документ с данной разметкой есть в сети - скиньте адрес. Либо всю разметку всех фреймов, но лучше адрес.
PM MAIL WWW ICQ Skype   Вверх
0Z0NE
Дата 10.5.2012, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



пока нету, но счас залью...

upd:

не нашел в правилах запрета на публикацию ссылок, если я просмотрел простите нуба)
сылка на этот злосчастный чат

P.S. хосту жить всего 2 дня осталось ... по прешествию снова тестовый акк возьму ...

P.P.S забыл сказать, работает лиш 2-й смайл с лева в верхнем ряду... хотя синтаксис вставки 1-го и 2-го смайла совершенно одинаковы О_о

Это сообщение отредактировал(а) 0Z0NE - 10.5.2012, 11:48
PM MAIL   Вверх
Aliance
Дата 10.5.2012, 17:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



 smile о мой Бог!

При клике на смайлики 1 вообще вызывается псевдоокно, поэтому так и не будет opener`а. Его мы не рассматриваем даже
При клике на смайлики 3 действительно вызывается окно. Что мы имеем там. Я молчу про то, что onclick зачем-то на ячейке таблице, а не на картинке или ссылке. Я молчу про то, что у каждой ячейки почему-то свой обработчик. Где-то вызывается window.top - что будет ссылаться само на себя, т.к. в открытом окне нет фреймов. А где-то вызывается правильный вариант с opener только при этом зачем-то пишется псевдопротокол javascript который там совершенно не нужен, а к тому же используется document.all за что вообще руки нужно вырывать, т.к. этот динозавр времен ИЕ5 нигде более не поддерживается.
PM MAIL WWW ICQ Skype   Вверх
0Z0NE
Дата 10.5.2012, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



да знаю, оккуратности, рациональности ну и опыта мне явно не хватает ... smile 

вот через псевдоокно функцией window.parent.document.getElementById('message_send').value=':aikido:' получается(получалось??) добавить код смайлика в textarea... но код смайлика не добавлялся а заменял данные ... как выкрутится безпонятия... пробовал в тупую взять уже имеющийся код(коль с помощью него вышло добратся до textarea) и записать в ссылку перед вставкой смайлика(для слития потом и вставки уже всей пачкой), получалось что-то типа
Код

var text = new String();
var text = window.top.document.all.forms["send"].getElementsByName('message_send').value;

и во вставке смайла пробовал провернуть что-то типа:
Код

window.top.document.getElementById('message_send').value = text + ':aikido:'


Простите пожалуйста, да я понимаю какой это шок для специалиста... ну надо-ж как-то учится... спасибо, сейчас пойду пропробую из своих каракулей попробую поудалять javascript: smile 

upd

попробовал удалить javascript: ... ничего не вышло, переместил onClick на картинку, всеравно не работает :( капец ...

Это сообщение отредактировал(а) 0Z0NE - 10.5.2012, 18:58
PM MAIL   Вверх
Aliance
Дата 11.5.2012, 10:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Вот так можно дописать в конец строки.
Код

document.getElementById('elemID').value += ' :aikido:';


Псевдопротокол javascript есть смысл использовать только в тегах, где атрибут принимает url, никак не в обработчиках. Хотя вообще на данном форему можно найти пост от СеЛяВи, в котором говорится о том, что использовать такое решение не самый лучший вариант.

Потом, не нужно писать onClick, все равно что пИСать рАзнЫмИ БукОвкАмИ...

_____________________________________________
И еще раз резюмируя:
В документе, содержащем разметку (и)фреймов пишем функцию на добавление смайлика, она должна выглядеть примерно так:
Код

function add_smile(smile) {
    document.getElementById('input_id').value += ' :'+smile+':';
}


В коде окна, которое вызывается через window.open нужно написать что-то вроде такого:
Код

<td><img src="/smiles/aikido.png" onclick="opener.add_smile('aikido')" alt="" title="Добавить смайлик" /></td>
<td><img src="/smiles/trollface.png" onclick="opener.add_smile('trollface')" alt="" title="Добавить смайлик" /></td>

PM MAIL WWW ICQ Skype   Вверх
0Z0NE
Дата 11.5.2012, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



капец ... как-ж я туп smile капец ... Спасибо Вам Aliance за помощ, буду исправлятся...
а можно в догонку простой и понятный(но не из серии "для чайников" где триста тонн ненужного текста) учебничек по JS? Пожалуйста ...

Спасибо всем кто помогал и пытался направить на путь истинный ...
PM MAIL   Вверх
Aliance
Дата 11.5.2012, 15:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Полезно читать прикреплённые темы ;)
http://forum.vingrad.ru/forum/topic-28420.html
PM MAIL WWW ICQ Skype   Вверх
0Z0NE
Дата 11.5.2012, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



ой, спасибо =)))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.