Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2011, 21:02
Интересующийся
Отправить личное сообщение для Australl Посмотреть профиль Найти все сообщения от Australl
 
Регистрация: 07.02.2011
Сообщений: 15

Элемент, в котором была нажата клавиша
Имеется элемент (id="edit"). Пользователь может редактировать любое содержимое в нём. Необходимо получить объект в котором была нажата клавиша (например, с id="t1"). srcElement, target выдают объект edit.

<div id="edit" contentEditable="true">
    <div id="t1">текст</div>
    <div id="t2">текст</div>
          ...
</div>


document.getElementById('edit').onkeypress​ = function( e )
{ /* код */ }


Вешать обработчики на каждый элемент не хочется, да и не красиво это.
Надеюсь на помощь, спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2011, 23:39
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

http://javascript.ru/tutorial/events...entx-y-pagex-y
Ответить с цитированием
  #3 (permalink)  
Старый 08.02.2011, 20:26
Интересующийся
Отправить личное сообщение для Australl Посмотреть профиль Найти все сообщения от Australl
 
Регистрация: 07.02.2011
Сообщений: 15

Спасибо за ответ, но видимо я плохо обрисовал ситуацию. Мне необходимо словить не нажатие кнопки мыши, а нажатие клавиши.
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2011, 21:57
Интересующийся
Отправить личное сообщение для Australl Посмотреть профиль Найти все сообщения от Australl
 
Регистрация: 07.02.2011
Сообщений: 15

Думаю если обрисовать ситуацию будет получше:
Имеется 2 формы, нужно их синхронизировать (в первой добавили букву - добавилась во второй). Ничего лучшего кроме как разбивать на строки и их пересылать в другую форму не придумал.
Ответить с цитированием
  #5 (permalink)  
Старый 08.02.2011, 22:40
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

я тебе правильную ссылку дал-тебе нужен с той страницы this
http://javascript.ru/tutorial/events...-element:-this
или event.target
http://javascript.ru/tutorial/events...nye-s-sobytiem
всего онклик поменять на онпресап. как получить валуе из элемента знаешь,да и параллели между полями проведёшь с лёгкостью.да и какой из эдитов сработал тоже будет просто
Зачем на строки бить ? посылаешь значение валуе из эдита(я понимаю что их несколько) в параллельный.
Здесь в исходном коде вопроса-есть алгоритм обхода и получения значений с одинаковых элементов формы
получить значение выбранной радиокнопки

Последний раз редактировалось dmitriymar, 09.02.2011 в 00:26.
Ответить с цитированием
  #6 (permalink)  
Старый 09.02.2011, 17:09
Интересующийся
Отправить личное сообщение для Australl Посмотреть профиль Найти все сообщения от Australl
 
Регистрация: 07.02.2011
Сообщений: 15

dmitriymar,
C onclick ясное дело работает. Сам был уверен что аналогично и заработают события, связанные с клавишами, но увы: this, event.target выдают именно эдит.

Цитата:
посылаешь значение валуе из эдита
Дело в том, что длина может быть и несколько сотен строк, т.е не самый лучший вариант пересылать всю форму сразу.

Цитата:
алгоритм обхода и получения значений с одинаковых элементов формы
Мне нужно получить значение только 1 элемента - тот в котором была нажата клавиша.

Видимо всё же придётся вешать обработчики на все элементы. Жаль, очень жаль.
Ответить с цитированием
  #7 (permalink)  
Старый 09.02.2011, 18:07
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

выборка из http://javascript.ru/tutorial/events...nye-s-sobytiem

-Обработчик стоит только на внешнем диве, но благодаря event.target выводит по клику класс исходного элемента.
-ну а каждому элементу можно присвоить свой класс.каждый элемент имеет свой класс-ну а по нему легко определить id элемента. форму всго если она есть с содержимым в контейнер. ну или просто поля-если форма не используеться
<div id="edit" contentEditable="true">
    <div id="t1"class="one">текст</div>
    <div id="t2" class="two">текст</div>
          ...
</div>



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

Последний раз редактировалось dmitriymar, 09.02.2011 в 18:20.
Ответить с цитированием
  #8 (permalink)  
Старый 09.02.2011, 18:50
Интересующийся
Отправить личное сообщение для Australl Посмотреть профиль Найти все сообщения от Australl
 
Регистрация: 07.02.2011
Сообщений: 15

Цитата:
Обработчик стоит только на внешнем диве, но благодаря event.target выводит по клику класс исходного элемента.
А никто и не спорит. Но нас же не клик интересует =)

А разницы между получением класса и идентификатора нет никакой, в любом случае вначале требуется получить сам объект. Вот тут то как раз и начинаются пляски - в случае событий, связанных с КЛАВИАТУРОЙ, и this и event.target указывает на эдит.
Я всё проверил не один раз, хоть убейте - выдаёт эдит.

Цитата:
эдит-это не форма-это элемент формы.и часть значения из него не возможно сразу получить.
Ну, "форма" - было образно, вообще никакой формы не будет.

Если вешать обработчик на каждый элемент, то срабатывать будет всё правильно. Меня же интересует именно обработчик на внешнем div'е.
Ответить с цитированием
  #9 (permalink)  
Старый 09.02.2011, 18:52
Интересующийся
Отправить личное сообщение для Australl Посмотреть профиль Найти все сообщения от Australl
 
Регистрация: 07.02.2011
Сообщений: 15

Я нагнул javascript.ru форум?
Ответить с цитированием
  #10 (permalink)  
Старый 09.02.2011, 19:16
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Сообщение от Australl
Я нагнул javascript.ru форум?
странно-а я по чему то взяв код полностью с той страницы http://javascript.ru/tutorial/events...nye-s-sobytiem
всё работает с кнопками клавиатуры


<div class="d1"
  onkeyup="t=event.target||event.srcElement; alert(t.className)"
>
<span class="number">1</span>
    <input type="text" value="34" class="er"/>
  <input type="text" value="35"class="rt" />
<textarea cols="" rows="" class="ty">er</textarea>
<textarea cols="" rows="" class="we">rt</textarea>
</div>


а небольшое изменение (вместо t.className написать t.id) будет показывать id элемента. хотя разницы в данном случае никакой применительно к этой задаче.работает-фф,опера,ие,сафари,хром в других не пробовал
с чего бы это?или Matre это опять ты?

Последний раз редактировалось dmitriymar, 09.02.2011 в 19:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить нажата какая-либо клавиша или нет? Бобр Общие вопросы Javascript 35 11.11.2016 17:42
определить элемент на котором щелчок warobushek Events/DOM/Window 3 13.06.2010 11:04
Как определить какая кнопка в <form> была нажата? konstantinopol Общие вопросы Javascript 5 20.12.2009 14:40