JQuery UI Datepicker теряет фокус при выборе даты с мышью

Можно попытаться исследовать HttpContext. Ошибка, но я не уверен в этом.

39
задан Jeff Ancel 9 September 2009 в 20:31
поделиться

5 ответов

Подпишитесь на onClose или onSelect событие:

$("#someinput").datepicker(
{
    // other options goes here
    onSelect: function ()
    {
        // The "this" keyword refers to the input (in this case: #someinput)
        this.focus();
    }
});

Или в случае onClose :

$("#someinput").datepicker(
{
    onClose: function ()
    {
        this.focus();
    }
});
39
ответ дан 27 November 2019 в 02:48
поделиться

Спасибо за предложение Джефф, я изменил вашу функцию onSelect, чтобы использовать фильтр атрибутов для извлечения только элементов с tabindex, указанным в "nexttab".

$(function(){
  $(".date").datepicker({
      onSelect: function(){
          currenttab = $(el).attr("tabindex");
          nexttab = currenttab * 1 + 1;
          $("[tabindex='" + nexttab + "']").focus();
      }
  });
});

PS: Если в вашем коде не указаны индексы табуляции, как я забыл сделать ранее, просто добавьте следующий код:

$('input, select').each(function(i, val){
    $(this).attr('tabindex', i + 1);
});
3
ответ дан 27 November 2019 в 02:48
поделиться

Фокусировка на одном и том же поле в конечном итоге вызывает всплывающее окно выбора даты, и мы действительно хотим, чтобы он перешел к следующему полю. Вот разработанное решение:

  1. Требует, чтобы в ваших полях был установлен атрибут tabindex.
  2. Это преобразование строки в int в javascript (* 1).
  3. Это фактически перемещает выбранное поле в следующий элемент вместо текущего фокуса

     $ (function () {
     $ (". date"). datepicker ({
     onSelect: function () {
     currenttab = $ (это) .attr ("tabindex");
     nexttab = currenttab * 1 + 1;
     $ (": input"). each (function () {
     if ($ (this) .attr ("tabindex") == nexttab)
     $ (это) .focus ();
     });
     }
     });
    });
    

Мы приветствуем любые предложения по улучшению этой техники.

0
ответ дан 27 November 2019 в 02:48
поделиться

Вы, вероятно, можете использовать событие onClose для возврата фокуса на ваш ввод при закрытии датпикера, поскольку this относится к соответствующему полю ввода в этом Перезвоните. Например:

$('.date').datepicker({
   onClose: function() { this.focus(); }
});
0
ответ дан 27 November 2019 в 02:48
поделиться

Если вам действительно не важен порядок табуляции, то есть, что он не назначен, чтобы он следовал за потоком страницы, вы можете сделать что-то вроде этого.

jQuery('.date').datepicker({
    'onSelect': function(){
        $(this).nextAll('input, button, textarea, a').filter(':first').focus();
    }
});

Это работает при условии, что когда пользователь выбирает дату, он заканчивает работу с этим полем и переходит к следующему, поэтому он просто выбирает следующее поле.

1
ответ дан 27 November 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: