Предотвращение фокусировки на следующем элементе формы после отображения оповещения с помощью JQuery - PullRequest
2 голосов
/ 24 марта 2010

У меня есть несколько текстовых вводов, которые я проверяю, когда пользователь переходит к следующему.Я бы хотел, чтобы после показа предупреждения фокусировался на проблемном вводе.Я не могу придумать правильный синтаксис, чтобы JQuery делал это.Вместо этого следующий код показывает предупреждение, а затем фокусируется на следующем вводе текста.Как я могу предотвратить переход на следующий элемент после отображения предупреждения?

$('input.IosOverrideTextBox').bind({
    blur: function(e) {
      var val = $(this).val();
      if (val.length == 0) return;
      var pval = parseTicks(val);
      if (isNaN(pval) || pval == 0.0) {            
        alert("Invalid override: " + val);
        return false;
      }
    },
    focus: function() {
      $(this).select();
    }
  });

Ответы [ 2 ]

0 голосов
/ 24 марта 2010

Вы можете сделать это с помощью плагина validation по умолчанию.

focusInvalid по умолчанию: true

Фокусировать последний активный или первый недопустимый элемент при отправке через validator.focusInvalid (). Последний активный элемент - тот, который имел фокус при отправке формы, избегая того, чтобы украсть ее фокус. Если элемент не был сфокусирован, первый в форме получает его, если эта опция не отключена.

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

0 голосов
/ 24 марта 2010

Мне не нравится принудительная фокусировка, но разве вы не можете просто сфокусироваться после размытия?

element.focus();

Если это происходит в событии размытия не всегда (я не уверен точно, когда оно срабатывает, до или после фактического размытия), избыточное время ожидания также будет работать: setTimeout(function () { element.focus() }, 0).

Но, пожалуйста, не делай этого. Черт возьми, вы никогда не должны использовать alert или какой-либо модальный диалог для веб-интерфейса. Как насчет добавления класса invalid в поле формы, откладывания сообщения в стороне от него и отключения отправки до тех пор, пока все поля не будут действительными? Это гораздо менее инвазивное решение, которое позволяет мне заполнять форму любым удобным для меня способом, а не любым простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...