Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.12.2017, 07:55
Аспирант
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 99

Функции срабатывают по несколько раз
Подгружаю поле ввода по клике на ссылку.

$(div).load('pole.php');

если прописывать дополнительные функции в самом pole.php
допустим

if(event.keyCode == 13){ alert('Ураа'); }

то функция повторяется столько же сколько будет и полей . а функции вне файла pole.php ни срабатывают. как поступить ?
Ответить с цитированием
  #2 (permalink)  
Старый 26.12.2017, 08:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 24,410

Samsam,
ставить обработку событий на то что присутствует всегда через $('...').on('click', 'input',)
Ответить с цитированием
  #3 (permalink)  
Старый 26.12.2017, 08:46
Аспирант
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 99

$( "textarea" ).keyup(function(event) {.. } - Такой вариант не пойдёт ? он будет выбирать все textarea ?
Ответить с цитированием
  #4 (permalink)  
Старый 26.12.2017, 08:51
Аспирант
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 99

а вообще нормально что коде будет дублироваться несколько раз одна и та же функция но с разными $('...'). ?
Ответить с цитированием
  #5 (permalink)  
Старый 26.12.2017, 08:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 24,410

Samsam,


$('body').on('keyup', 'textarea',function(event) {if(event.keyCode == 13){ alert('Ураа'); }})
Ответить с цитированием
  #6 (permalink)  
Старый 02.01.2018, 10:22
Аспирант
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 99

Этот вариант не срабатывает.

Сейчас вот так $( ".textarea" ).on('keypress', function(event) { ... });

Подгруженные блоки $( ".textarea" ) не работают. Подскажите выход
Ответить с цитированием
  #7 (permalink)  
Старый 02.01.2018, 10:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 24,410

Samsam,
ставить обработчик на то что есть всегда (родителя и т.д. до window)
$('body').on('keypress', '.textarea', function(event) { ... }
или после создания элемента

$(div).load('pole.php',function() { $( ".textarea" ).on('keypress', function(event) { ... });}
);
Ответить с цитированием
  #8 (permalink)  
Старый 02.01.2018, 10:49
Аспирант
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 99

Спасибо ! всё заработало. Ещё вопрос подскажите с фокусом.

$(div).html('длинный текст');
$(div).focus();

как сделать что бы фокус попадал в конец текста ?
Ответить с цитированием
  #9 (permalink)  
Старый 02.01.2018, 11:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 24,410

contenteditable курсор в конец текста
Samsam,
может есть другой способ
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
var str = "длинный текст" , pos = str.length;
$("div").html(str);
var range = document.createRange();
range.setStart($("div")[0].childNodes[0], pos);
range.collapse(true);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
});
  </script>
</head>

<body>
<div id="slider" contenteditable ></div>

</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 03.01.2018, 12:21
Аспирант
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 99

Спасибо. А вообще будет ли замедляться работа сайта если вызов функций такого формата ( $('body').on('...', function(){...} ) будет очень много ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение кода только один раз в несколько секунд. Threaded_Inquisitor Элементы интерфейса 7 18.10.2013 08:15
как запретить вызов функции чаще n раз в несколько секунд ? linklee Общие вопросы Javascript 2 19.07.2013 13:52
Почему не срабатывают функции? allanmiln AJAX и COMET 1 10.04.2013 21:05
Переодическая работа функции adik7960 Общие вопросы Javascript 8 16.12.2012 09:13
live click выполняется несколько раз hara jQuery 9 09.06.2010 09:58