- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Сабж.
Мне нужно чтобы при потере фокуса инпутом аяксом проверялась допустимость значения, но только в случае если юзер прямо из этого поля не щелкнул по одной определенной ссылке.
Как это сделать?
всевозможные 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 или табуляцию по форме?