Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2016, 00:51   #1
scalpel
Форумчанин
 
Аватар для scalpel
 
Регистрация: 01.02.2010
Сообщений: 118
По умолчанию Как определить откуда клик пришел

Скажите как правильно реализовать такое.
Есть 2 блока
Код HTML:
<div class="order order-1">
	<div class="input-group input-group-order">
		<span class="input-group-addon input-group-addon-order"><span class="otkyda">1</span></span>
		<a href="javascript:" class="btn-order-map" id="order-1"><i class="fa fa-map-marker"></i></a>
		<input type="text" name="otkyda" class="form-control form-control-order error" placeholder="Выберите адрес" id="autocomplete1">
	 </div>
</div>
<div class="order order-2">
	<div class="input-group input-group-order">
		<span class="input-group-addon input-group-addon-order"><span class="kyda">2</span></span>
		<a href="javascript:" class="btn-order-map" id="order-2"><i class="fa fa-map-marker"></i></a>
		<input type="text" name="kyda" class="form-control form-control-order error" placeholder="Выберите адрес" id="autocomplete2">
	 </div>
</div>
Надо определить с какой ссылки пришел клик и в зависимость от клика добавить информацию в соответствующий input.

Пробовал таким образом но не работает.

Код HTML:
document.body.onclick = function (e) {
        e = e || event;
        target = e.target || e.srcElement;
        if (target.tagName == "a" && target.id == "order-1") {
            return alert("good");
        } else {
            return alert("fail");
        }
    }
scalpel вне форума Ответить с цитированием
Старый 28.11.2016, 01:16   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как именно не работает-то?
Смотрите есть ли ошибки в консоли, смотрите что происходит в отладчике (или console.log(target))

И объявляйте переменные с var иначе они глобальные.
Код:
var target = ............;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.11.2016, 09:23   #3
scalpel
Форумчанин
 
Аватар для scalpel
 
Регистрация: 01.02.2010
Сообщений: 118
По умолчанию

Функция работает только выводит "fail" в любых случаях даже при нажатие на ссылку и нужным ид.
scalpel вне форума Ответить с цитированием
Старый 28.11.2016, 09:31   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Смотрите что происходит в отладчике (поставьте точку остановки в функции) или console.log(target)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.11.2016, 11:33   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от scalpel Посмотреть сообщение
даже при нажатие на ссылку и нужным ид.
во-первых, а как Вы попадаете по ссылке с нужным id, если в вашем примере ссылка пустая?
js1.png


p.s. ну и проверки по ID более чем достаточно.
Если у Вас ID в DOM не уникально - значит, у Вас неверный HTML код,
его нужно исправить так, чтобы ID однозначно идентифицировало элемент,
иначе это не ID, а фигня какая-то!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2016, 12:34   #6
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Если у Вас ID в DOM не уникально - значит, у Вас неверный HTML код
неправильно

Последний раз редактировалось Alar; 28.11.2016 в 13:14. Причина: Цензура!
come-on вне форума Ответить с цитированием
Старый 28.11.2016, 12:43   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
фу, как неправильно
Не верите спецификации?
https://www.w3.org/TR/html5/dom.html#the-id-attribute
Цитата:
The value must be unique amongst all the IDs in the element's home subtree and must contain at least one character. The value must not contain any space characters.
Ну и да, некоторые вещи будут работать и с не уникальными, но зачем?

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
если в вашем примере ссылка пустая?
там классом типа "fa fa-map-marker" должны вставляться иконки (видимо автор использует Bootstrap и иконки из шрифта font awesome)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.11.2016 в 12:52.
Alex11223 вне форума Ответить с цитированием
Старый 28.11.2016, 13:07   #8
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
The value must be unique amongst all the IDs in the element's home subtree and must contain at least one character.
где тут про ВСЕ говорят? чтож вы сюда цитируете и неверно комментируете?
come-on вне форума Ответить с цитированием
Старый 28.11.2016, 13:21   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Все что?
Цитата:
Сообщение от come-on Посмотреть сообщение
а какие не будут?
document.getElementById и jQuery $(''#...") вернет только один, а не все. Что может не являться ожидаемым поведением (например хотел второй элемент, а получил первый) и непонятно зачем так запутывать код. Код же для людей, а люди ожидают, что ID уникальный.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.11.2016 в 13:24.
Alex11223 вне форума Ответить с цитированием
Старый 28.11.2016, 13:22   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

come-on,может быть, расскажете о том, о чём намекаете.

Цитата:
Сообщение от come-on Посмотреть сообщение
фу, как неправильно
про то, что ID должно быть уникально..
Расскажите, как должно быть правильно.


Цитата:
Сообщение от Alex11223 Посмотреть сообщение
там классом типа "fa fa-map-marker" должны вставляться иконки
да, точно, это я проглядел.
Но, даже так, разве в этом случае клик получает не сам <i class="fa fa-map-marker"></i> ?
если да, тогда в этом случае нужно проверять id родительского узла.
ну, так, например:
Код:
	if (target.parentNode.id == "order-1") {
            return alert("good");
....
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ListView. Определить в каком столбце сделан клик Shouldercannon Общие вопросы Delphi 1 07.06.2015 19:25
Этому жесткому диску пришел конец ? spawnnezo Компьютерное железо 1 16.01.2013 01:21
Откуда ошибки и как их исправить M1naTo Помощь студентам 2 15.02.2012 12:08
[HELP] C; как показать откуда до куда? AlexandrSN Общие вопросы C/C++ 1 11.06.2009 13:20