У меня есть форма, которую я создаю в Bootbox (сам слой поверх модального Bootstrap).После того, как он создан, я вызываю
$('#myForm').validate()
.
Желательная часть поведения состоит в том, что теперь, когда пользователь просматривает формы, он можетувидеть немедленную обратную связь, что они испортили одно из полей.Введен не адрес электронной почты, прежде чем нажать «вкладку» или щелкнуть в другом месте?Предупреждение и сообщение об ошибке.Отлично!
Но нежелательно то, что размытие съедает другие события.Таким образом, если пользователь вместо этого выберет «отменить» (прекрасно зная, что форма недействительна), щелчок по отмене не будет слышен, и его обработчик не сработает.Второй щелчок (теперь, когда фокус находится вне формы) и отмена пожаров, как и ожидалось.Я не хочу, чтобы пользователям приходилось дважды щелкать.
Я видел технику полного отключения размытия, но затем описанное выше желаемое поведение теряется, чего я тоже не хочу.В идеале, «я размыл, но я также знаю, что пользователь нажимал» - это то, что я ищу.
[ПРАВИТЬ ДОБАВИТЬ:]
Это привлекло мое вниманиечто это сбивает с толку, так что позвольте мне попробовать другой подход к вопросу: можно ли работать с формой (для которой была вызвана .validate()
), затем щелкнуть по любому другому интерактивному элементу на всей странице и получитьего обработчик кликов успешно срабатывает?
[EDIT AGAIN:]
На основе демонстрации Спарки я написал предупреждение, чтобы показывать под входами размытие.Итак, чтобы увидеть проблему в действии, запустите эту скрипку: https://jsfiddle.net/bd1fhpu3/
Затем нажмите на одно из полей ввода перед тем, как нажать «просто кнопка».Нажмите верхнюю полоску «просто кнопка», чтобы убедиться, что предупреждающие надписи вытолкнули ее из горячей точки курсора при отпускании кнопки мыши.
В любом случае, это просто объясняет, в чем проблема.Решение этого вопроса, вероятно, больше не входит в сферу вопроса, но, похоже, стоит поделиться им, если кто-нибудь еще столкнется с этим.Чтобы решить эту проблему, мне нужно либо переопределить событие click в Bootbox, чтобы оно было событием mousedown вместо щелчка (тогда вам не нужно нажимать и отпускать), либо я могу использовать «Band-Aid» (tm) решение, избегая перемещениякнопка.Может быть, диалог статической высоты, который достаточно высок, чтобы вместить форму и любые возможные предупреждения.Определенно что-то вроде «взлома», такого как этот, потому что вы просто никогда не знаете, будете ли вы позже делать другие вещи, которые заставят проблему появиться снова.Но это было бы быстрое и простое временное исправление.