2012-01-30 2 views
1

Этот код создает пользовательское шоу & скрыть событие. Это от here.jQuery ui datepicker конфликтует с пользовательским событием?

// show & hide events 
$.each(["show", "hide", "toggleClass", "addClass", "removeClass"], function() { 
    var oldFn = $.fn[this]; 
    $.fn[this] = function() { 
     var hidden = this.find(":hidden").add(this.filter(":hidden")); 
     var visible = this.find(":visible").add(this.filter(":visible")); 
     var result = oldFn.apply(this, arguments); 
     hidden.filter(":visible").each(function() { 
      $(this).triggerHandler("show"); 
     }); 
     visible.filter(":hidden").each(function() { 
      $(this).triggerHandler("hide"); 
     }); 
    }; 
}); 

Это хорошо работает, пока я не использую datepicker в пользовательском интерфейсе jQuery. $("input[type=text]").datepicker(). Я получил эту ошибку

jquery-ui.js:7473Uncaught TypeError: Cannot call method 'keydown' of undefined

Но если я закомментировать "addClass" & "removeClass" как этот

$.each(["show", "hide", "toggleClass"/*, "addClass", "removeClass"*/], function() {

Он снова работает. Вот тест http://jsfiddle.net/Lf9Hv/2/

У кого-нибудь есть идеи?

Спасибо.

ответ

1

Ну, datepicker делает достаточное количество манипуляций с классом при настройке datepickers вверх, и вы, вероятно, не захотите с ним обманывать, пока он это делает. Возможно, сначала запустите datepicker, а затем настройте прослушиватель событий, как только это будет сделано?

Редактировать: и на втором взгляде я могу определенно увидеть хотя бы одно, что вы делаете, это неправильно. Вы должны добавить кавычки «текст»

$("input[type='text']").datepicker() 

Использование двух различных видов цитат позволит вы вкладываете их в этом роде. (Вложенность их в другую сторону также работает.) Опять же, я не могу сказать, разрешит ли это все ваши проблемы, но это точно не повредит.

+0

Я попытался переместить '$ (" input [type = text] "). Datepicker()' this сверху, но я получил новую ошибку 'Uncaught TypeError: не могу вызвать метод 'width' of undefined' – trung