2010-04-22 5 views
1

Я использую встроенное редактирование с использованием Jeditable и datepicker. У меня есть столбец в моей таблице, который отображает Date как гиперссылку. Когда я нажимаю на это, он показывает мне дату. И когда выбрана конкретная дата, ее обновление в бэкэнд и ячейка теперь обновляются с измененным значением. Однако у меня проблема с событием onblur, изменяя месяц или годы. Это событие срабатывает, когда я нажимаю кнопки «Prev» или «Next» на элементе управления datepicker. Это вызывает исключение, когда выбрана дата. Это работает отлично, пока выбранная дата находится в текущем месяце. Я перепробовал все возможные решения, перечисленные здесь:Jeditable Datepicker onblur problem

stackoverflow.com/questions/2007205/jeditable-datepicker-causing-blur-when-changing-month

Если SetTimeout управление не вернуться к нормальной гиперссылкой на закрытие datepicker или в реальном событии onblur.

Вот мой код,

$ .editable.addInputType ('DatePicker', { элемент: функция (настройки, оригинальное) { вход вар = $ (''); если (settings.width! = 'none') {input.width (settings.width);} if (settings.height! = 'none') {input.height (settings.height);} input.attr ('autocomplete', 'off «); $ (это) .append (вход); обратные (вход); }, плагина: функциональные (настройки, оригинальная) { форма вара = это;

settings.onblur = function(e) { 
     t = setTimeout(function() { 
     original.reset.apply(form, [settings, self]); 
     }, 100); 
    }; 

    $(this).find('input').datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     dateFormat: 'dd-M-y', 
     closeAtTop: true, 
     onSelect: function(dateText) { $(this).hide(); $(form).trigger('submit'); } 
    });    
}, 
submit : function(settings, original) { } 

});

$ (функция() { $ ('edit_eta. ') Для редактирования (' update_must_fix_eta.php', { ID:. 'BUGID', имени: 'ета', типа: 'DatePicker', событие: 'нажмите', выберите: правда, ширина: '50px', ONBLUR: 'отмена', CssClass: 'редактируемые', индикатор: 'Обновление ETA подождите, пожалуйста.', стиль: 'унаследуют' , submitdata: {version: '4.2 (4)', tag: 'REL_4_2_4', qstr: 1} }); });

Я попытался хакерские jeditable.js как упомянуто по этой ссылке: http://groups.google.com/group/jquery-dev/browse_thread/thread/265340ea692a2f47

Даже это не помогает.

Любая помощь приветствуется.

ответ

1

Вы пробовали jeditable-datepicker плагин? Кажется, он делает именно то, что вам нужно.

Он позволяет использовать jQuery UI Datepicker в Jeditable. Вот demo.

1

Да, я использовал то же самое. Мне пришлось отключить кнопки Prev и Next, которые переходят к предыдущему и следующему месяцам соответственно. Я показываю 3-месячный календарь, когда нажимается ссылка, и если пользователь хочет ввести дату, которая не попадает ни в один из этих трех месяцев, я позволяю ему вводить ее вручную, создавая редактируемое текстовое поле ввода. Это решило мою проблему.