jqGrid: wie, um den Fokus verlieren, wenn ich Sie außerhalb des Gitters, oder anderswo für diese Angelegenheit
ich bin derzeit dabei Bearbeiten Sie mithilfe der inline-Bearbeitung, und wenn ich Sie außerhalb des Gitters, ist es immer noch unter "Bearbeiten". welche event-Handler sollte ich verwenden, um es rufen die Wiederherstellung Zeile-Funktion, so dass der einzige Weg die Daten tatsächlich an den server gesendet wird, wenn der Benutzer die EINGABETASTE drückt.
thx im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht genau, wie Sie das auslösen der inline-edition. Ich benutze die
ondblClickRow
Veranstaltung der jqGrid, und war auch auf der Suche nach einem Weg zur Wiederherstellung der Zeile, wenn der Benutzer dieinput
oderselect
(Bearbeiten) element.Ich finde es umständlich, den überblick zu behalten zuletzt ausgewählten element, und überprüfen Sie auf jeder, klicken Sie auf weitere Elemente. So, ich denke, ein bequemer Weg ist, um befestigen Sie die
restoreRow
trigger, um dieblur
Veranstaltung derinput
oderselect
element derzeit bearbeitet wird, etwa so:Diese Weise die Zeile wiederhergestellt wird, wenn der Benutzer verlässt das edition-Feld, ohne die EINGABETASTE drücken.
Dieser Ansatz funktioniert gut für mich, hoffe, es hilft jemand anderem zu.
colModel
ist, was Sie suchen:editoptions: { dataEvents: [ { type: 'keypress', fn: function(e) { if ((e.keyCode || e.which) == 13) {/* your code here */} } } ] }
Jedenfalls habe ich herausgefunden, wie man es schon. Dachte nur, gut sein könnte, lassen Sie es irgendwo online als ich verschwendet viel Zeit herauszufinden, wie es zu tun. Hoffe es hilft =)
Nur hinzufügen, dass dieses Stück code irgendwo und ändern Sie die entsprechenden Teile, wie Feldname und lastSelectRoot und #grid zu dem, was Sie bereits verwenden.
Da das Hauptproblem ist, dass Sie möchten, den Fokus zu verlieren, wenn Sie auf außerhalb des Gitters, die ich schrieb, diese Funktion zu deaktivieren Sie die Zelle nur, wenn das Netz nicht hat() das angeklickte element:
length == 0
stattsize() < 1
Diese Lösung ist für mich zu arbeiten und sieht einfacher als die anderen Optionen. Ist generisch und benötigt keine Globale variable.
Lösungen basierend auf $(document).auf('click') haben eine mögliche Schwachstelle. Einige Komponenten wie select2 nicht vermehrt das click-Ereignis, um das Dokument, so dass es scheitern wird, wenn Sie auf Ihrer Seite und es angeklickt wird (das war mein Fall).
Sogar ich Stand vor dem gleichen Problem bei der Arbeit mit inline-editing.Ich habe für einen workaround.Ich wissen noch nicht, noch, ob es ein Recht ist, eine Lösung.
Wenn ich Zeilen Bearbeiten, habe ich mit dieser Art
wenn ich wollte, um das senden der Daten zum server zu aktualisieren, verwende ich die nach der Anweisung in meiner ersten Zeile und sendet dann das senden der Daten an den server.
Hoffe, das gibt Ihnen eine Vorstellung, wie zu tun, Ihr problem zu lösen.
BTW ich habe nur eine Zeile bearbeitet werden kann, an jedem Punkt der Zeit.
Im tryed paar verschiedene Varianten. Basierend auf Mauricio Reis ' code ich schrieb meine eigenen.
Wenn man sparen will Zeile stattdessen brechen Sie die Eingabe legen Sie einfach
statt