2013-03-19 25 views

Odpowiedz

14

Poniższy kod zapisze bieżącą zmianę.

Slick.GlobalEditorLock.commitCurrentEdit(); 

Musisz umieścić to wewnątrz programu obsługi zdarzeń, który Twoim zdaniem powinien wywołać zapis. Na przykład, jeśli używasz wtyczki edytora tekstu przykładowego, wierzę klasa editor-text CSS jest dodawany do pola wprowadzania, który jest tworzony podczas edytowania komórki więc coś jak to powinno działać:

$('#myGrid').on('blur', 'input.editor-text', function() { 
    Slick.GlobalEditorLock.commitCurrentEdit(); 
}); 
+0

Być może czegoś tutaj brakuje. Teoretycznie to działa - ponieważ jeśli dodaję go w konsoli firebug, a następnie otrzymam skupienie i utracę ostrość, działa on tylko raz. Ale w kodzie, nawet w dokumencie, już nie działa: \ – sunzyflower

+0

Mój błąd, ten przykład rozmycia nie zadziała, ponieważ pola wejściowe są dodawane dynamicznie. Będziesz musiał powiązać zdarzenie za pomocą 'on'. Zaktualizowałem przykład, spróbuj tego. – clav

+0

Dostaję następujący błąd: TypeError:.. JQuery (...) nie jest funkcją [Przerwa Na ten błąd] \t jQuery ('# myGrid') na ('rozmycie', „wejście .editor-text ', function() { – sunzyflower

6

I stwierdzono, że musiałem zawijać obsługi Clav w timeout:

$("#myGrid").on('blur', 'input.editor-text', function() { 

    window.setTimeout(function() { 

     if (Slick.GlobalEditorLock.isActive()) 
      Slick.GlobalEditorLock.commitCurrentEdit(); 

    }); 

}); 

aby uniknąć błędów takich jak:

Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist. 

podczas korzystania z klawiatury do nawigacji. Prawdopodobnie nowy menedżer rozmycia zostanie uruchomiony, zanim SlickGrid będzie mógł sam sobie poradzić i to spowoduje problemy.

4

Niestety, prawdopodobnie z powodu różnic w przetwarzaniu zdarzeń, wersja Grame łamie nawigację po klawiaturze w chrome. Aby rozwiązać ten problem, dodałem kolejny czek tylko popełnienia zmienił, jeśli nowo koncentruje element nie jest kolejnym elementem redaktor w sieci (w wyniku nawigacji klawiatury):

  $('#grid').on('blur.editorFocusLost', 'input.editor-text', function() { 
       window.setTimeout(function() { 
        var focusedEditor = $("#grid :focus"); 
        if (focusedEditor.length == 0 && Slick.GlobalEditorLock.isActive()) { 
         Slick.GlobalEditorLock.commitCurrentEdit(); 
        } 
       }); 
      }); 

To wydaje się działać w prądzie wersje firefox, chrome i ie.