Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменить событие по клику (https://javascript.ru/forum/misc/81680-izmenit-sobytie-po-kliku.html)

Ubivectel 12.01.2021 20:05

Изменить событие по клику
 
Добре товарищи!

Имеем чат и список юзеров соответственно, сейчас по клику на ник он выводит меню с дополнительными функциями, очень хочется научить его вставлять по клику ник юзера с запятой в окно ввода текста, а лучше по клику ЛКМ.

Вот фрагмент кода который как я понимаю формирует юзер лист:

kide.insert_sesion = function(user) {
	var div = document.createElement('div');
	div.setAttribute('style', 'cursor:pointer');
	div.setAttribute('class', user._class);
	div.onclick = function() { kide.mostrar_usuario(user.id, user.name, user.rango, user.sesion, user.profile, user.img) };
	div.innerHTML = user.name;
	this.$('KIDE_usuarios').insertBefore(div, this.$('KIDE_usuarios').firstChild);
};


а вот код который умеет вставлять в в окно ввода текста ники (первоначально вставляет код смайликов):

<a href="javascript:kide.insertSmile(' Выводимый текст ')">
		Отображаемый текст
		</a>


На всякий случай ссылка на файл JS: https://noviy-kovcheg.ru/components/...ult/js/kide.js

рони 12.01.2021 20:28

Цитата:

Сообщение от Ubivectel
вставлять по клику ник юзера с запятой в окно ввода текста,

kide.insertSmile(user.name  + ', ');

вместо
kide.mostrar_usuario(user.id, user.name, user.rango, user.sesion, user.profile, user.img)

рони 12.01.2021 20:46

Ubivectel,
kide.insert_sesion = function(user) {
	var div = document.createElement('div');
	div.setAttribute('style', 'cursor:pointer');
	div.setAttribute('class', user._class);
	div.onclick = function() { kide.mostrar_usuario(user.id, user.name, user.rango, user.sesion, user.profile, user.img) };
	div.innerHTML = user.name;
    div.addEventListener('contextmenu', function(event) {
    event.preventDefault();
    kide.insertSmile(user.name  + ', ');
    }, true);
	this.$('KIDE_usuarios').insertBefore(div, this.$('KIDE_usuarios').firstChild);
};

Ubivectel 12.01.2021 20:55

спасибо рони, как всегда все работает, и правда профессор! :)

Ubivectel 12.01.2021 22:37

Все, окончательно все сделал, только поменял местами события, левый клик вставляет ник, а правый вызывает меню. Хотел проделать тоже самое с никами в окне сообщений, но похоже, что там клик обрабатывает не JS а PHP, и по образу и подобию сделать не прокатило :(

Ubivectel 12.01.2021 23:33

На случай если кто-то php понимает не хуже JS:

echo '<span style="cursor: pointer" title="'.$tiempo.'" onclick="kide.mensaje(\''.addslashes($r->name).'\','.$r->userid.','.$r->id.',\''.$r->url.'\',\''.$tiempo.'\',\''.$r->sesion.'\','.$r->rango.',\''.$r->img.'\')" class="'.KideHelper::getRango($r->rango, 'KIDE_').'">';

laimas 12.01.2021 23:37

Цитата:

Сообщение от Ubivectel
там клик обрабатывает не JS а PHP

PHP этого делать не может, да и не нужно ему это.

Ubivectel 12.01.2021 23:43

Спасибо, понял, полез искать где оно в скрипте)

рони 13.01.2021 00:04

Цитата:

Сообщение от Ubivectel
На случай если кто-то php понимает не хуже JS:

да это именно эта строка, формат могу путать но будет что-то типа
echo '<span style="cursor: pointer" title="'.$tiempo.'" onclick="kide.insertSmile(\''.addslashes($r->name).'\')">';

Ubivectel 13.01.2021 00:23

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


Часовой пояс GMT +3, время: 17:52.