- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Сабж.
Мне нужно чтобы при потере фокуса инпутом аяксом проверялась допустимость значения, но только в случае если юзер прямо из этого поля не щелкнул по одной определенной ссылке.
Как это сделать?
всевозможные target не помогают.
Да и вообще я весь объект event распечатал, никаких следов
Мне нужно чтобы при потере фокуса инпутом аяксом проверялась допустимость значения, но только в случае если юзер прямо из этого поля не щелкнул по одной определенной ссылке.
А как это - потеря фокуса - если не щелкнул по ссылке? Т.е. т.к. в INPUT ссылок запихать нельзя, то сл-но ссылки находятся вне инпута, значит любой клик по ним - это заведомо потеря фокуса инпутом.
Т.е. чего-то ТЗ хромает! :) Задача не понятна.
да не, вы все правильно сказали.
но если он щелкнет по любой другой ссылке (стоя курсором в инпуте) кроме одной конкретной то пусть онблюр срабатывает как надо, а если именно по этой - то по сути надо отменить вызов функции
Включаем перехват события onBlur - и вместо того чтобы оно сразу срабатывало - проверяем что юзер сделал после этого блюра. Т.е. если пошел по ссылкам - бог с ним, если клинкул на что-то нужное - включаем обработку onBlur-а.
Или я не понял?
но если он щелкнет по любой другой ссылке (стоя курсором в инпуте)
он физически не может "кликнуть", одновременно "стоя курсором", как только он кликнул - "курсор" уже уехал - arrivederci...
т.к. браузер по умолчанию на onClick меняет Focus на другой элемент (на тот на который кликают), а смена фокуса это и есть onBlur, для предыдущего элемента имевшего фокус...
можно правда пробовать комбинировать onBlur и onClick как события... в принципе т.к. события разные - то должно сработать.
Включаем перехват события onBlur - и вместо того чтобы оно сразу срабатывало - проверяем что юзер сделал после этого блюра. Т.е. если пошел по ссылкам - бог с ним, если клинкул на что-то нужное - включаем обработку onBlur-а.
Или я не понял?
поняли с точностью до наоборот. Если юзер кликнул по определенной одной ссылке - отменяем обработку, иначе пусть работает. Но вопрос как это связать, ведь blur неотменяемое событие. ввести глобальную переменную?
он физически не может "кликнуть", одновременно "стоя курсором", как только он кликнул - "курсор" уже уехал...
ну я это сказал к тому что вопрос не в перехвате просто клика по ссылке, а в перехвате клика по ссылке при потере фокуса определенным инпутом
поняли с точностью до наоборот. Если юзер кликнул по определенной одной ссылке - отменяем обработку, иначе пусть работает. Но вопрос как это связать, ведь blur неотменяемое событие. ввести глобальную переменную?
ну что "ввести" уже не важно - главное чтобы это был идентификатор потери фокуса именно нужным объектом, если не поймать это в нужный момент - то как потом узнать что фокус был именно на нем?
Потом если включить логику - то идея такая - если инпут получил фокус, значит на него кликнули мышом, значит мышь был на нем, значит на onMouseOut можно включить перехват captureEvents для этого инпута.
Т.е. если мышь пополз в сторону (кликать на ссылку) - мы уже ждем совершения блюра... Если он свершился одновременно с кликом на нужную ссылку - "велкам ту праздник жизни"
Правда это не решает проблемы если юзер табом ходит по форме, но таких мало, и можно отменить для инпута переход по табу.
Можно попробовать такую логику:
Когда нужный инпут получил фокус (юзер начал что-то вводить) - переключаем глобальный флаг isInputFocused в true;
А необходимой ссылке в onClick прописываем функцию, которая работает так:
if(isInputFocused == true){
возвращаем фокус элементу нашего бедного инпута
}
Или я неправильно понял суть задачи?
Блин, короче, чтоб было понятней.
Есть поле для ввода URL страницы. Юзер его вводит, и когда переключается на другой объект, урл автоматически проверяется на корректность (это сделано онблюром). И есть еще ссылка "сгенерировать урл". вот мне нужно чтобы если юзер ввел (или просто встал в поле) урл а потом кликнул по "сгенерировать урл", проверки не производилось, потому что ежу понятно что сгенерированный урл будет корректен.
Есть вот такая идея, значит есть событие onExit="bla-bla-bla;"
теперь в функции мы проверяем, попал ли фокус на следующее поле в форме или кнопку формы. Если фокус в этой форме (ну типа там табами перешел) тыды делаем проверку, если нет (это значит фокус не на этой форме) то не паримся и проверку не запускаем.
:) ежу другое не понятно? На чем экономим? на одном случайном запросе?
1. Т.е. если пользователь не ввел урл - то это отсекается в функции проверки? т.е.
if( .value) { только тогда и проверяем }
2. если он кликнул на любую ссылку кроме нужной - проверка так и так должна быть.
3. Если сразу кликнул на ссылку - то можно ввести нужный урл и заблокировать поле...
4. (и последний) если ввел урл или огрызок от него и кликнул на нужную ссылку - то осуществиться проверка этого огрызка (по onBlur), а потом подставится нужная ссылка.
получается что по ТЗ нужна защита только от случая 4. Но это в любом случае - максимум лишний запрос - в чем проблема то?
Если проблема все же есть - еще раз повторю - кури про перехват событий.
поясняю насчет лишнего запроса.
Проверка урла идет на сервере, аяксом. И им же идет генерация нового. Запросы асинхронные, таким образом если при онблюре полез проверять текущий урл, а по клику полезет генерировать - какой ответ придет раньше неизвестно. И могут быть прочие неприятные эффекты.
Про перехват - имеется ввиду перехватывать onclick или табуляцию по форме?