2010-06-20 15 views
8

Mam Jstree wypełniającą listę przedmiotów. Kiedy klikam na węzeł częściowy jest ładowany z ajaxem. Wszystko działa poprawnie, dopóki nie dołączę skryptu jquery.validate do sprawdzania poprawności moich formularzy.JsTree powoduje konflikty z jquery.validate

<script src="/scripts/jquery.validate.js" type="text/javascript"></script> 
<script src="/scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script> 
<script src="/areas/manager/scripts/jquery.jstree.min.js" type="text/javascript"></script> 
<script src="/areas/manager/scripts/jquery.hotkeys.js" type="text/javascript"></script> 
<script src="/areas/manager/scripts/admin-panel.js" type="text/javascript"></script> 

Po dodaniu tego pliku nie można wybrać węzłów drzewa. Również funkcja przeciągania i upuszczania nie działa. W firebug nie zgłoszono błędów javascript. Ktoś wie, jak rozwiązać takie konflikty?

Dzięki

+1

Która wersja wtyczki sprawdzania poprawności? 1.6 fubar'd funkcję delegata. –

Odpowiedz

10

Zgaduję używasz wersji 1.6 biblioteki walidacji, spójrz na źródło tutaj: http://ajax.microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.js

całą drogę na dole:

$.extend($.fn, { 
    delegate: function(type, delegate, handler) { 
     return this.bind(type, function(event) { 
      var target = $(event.target); 
      if (target.is(delegate)) { 
       return handler.apply(target, arguments); 
      } 
     }); 
    }, 
    triggerEvent: function(type, target) { 
     return this.triggerHandler(type, [$.event.fix({ type: type, target: target })]); 
    } 
}) 

Problem polega na tym, że 1.6 stworzył powyższą funkcję , która jest nie jQuery rdzeń .delegate(), głównym problemem jest konflikt nazw i argumenty/zachowanie nie są " T sam:

  • jQuery.validate: .delegate(type, delegate, handler)
  • jQuery rdzeń: .delegate(selector, eventType, handler)

Pomijając inne szczegóły, takie jak kontekst, pierwszy problem to pierwsze i drugie argumenty są do tyłu.

W tym jQuery.validate 1.6 łamie funkcję .delegate(), na której opiera się jsTree. Jeśli po prostu zaktualizujesz do wersji version 1.7+ of the validation plugin, problem ten powinien zniknąć, po tym czasie wywołuje on swoją funkcję validateDelegate.

Powiązane problemy