jqGrid: Ist es möglich, einen commit für eine Zelle ändern, bei der Tab-off statt Enter drücken?
Ich habe eine einfache in-line-edit in mein raster, und ich möchte, um die änderung zu bestätigen, wenn der Benutzer mit der Tabulatortaste aus der textbox. Das Standard-Verhalten von jqGrid zwingt den Benutzer zum drücken von "Enter", um die änderung zu bestätigen, aber dies ist nicht intuitiv für unsere Nutzer.
onSelectRow: function(id) {
$(gridCoreGroups).editRow(id, true, undefined, function(response)
{
alert("hello world");
}
}
Habe ich gearbeitet mein Weg durch die Veranstaltungen zur Verfügung gestellt, aber Sie alle passieren, als ein Ergebnis der Benutzer 'Enter', die ich vermeiden möchte. Gibt es etwas, was ich kann Draht, das wäre die eine Aktion auslösen, wenn der Benutzer mit der Tabulatortaste aus dieser Zelle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die in-line-Bearbeitung Sie erreichen dies mehrere Möglichkeiten. Zum binden von einem onblur-Ereignis in das input-Feld mit der onSelectRow Auslöser, wodurch die Notwendigkeit für Bearbeiten und speichern-Schaltflächen, etwas wie das hier tun:
Anwenden eine jQuery live-event-handler auf alle Eingaben, die angezeigt werden können innerhalb einer Zeile (jqGrid Etiketten alle Eingänge als rowId_fieldName ), loop-werfen Sie die Anzahl der Zeilen in Ihrem Netz und tun Sie etwas wie dieses:
Hinweis: Verwendung Unschärfe mit .live() wie oben, müssen Sie jQuery 1.4 oder der patch liegt unter:
Simulation von "focus" und "blur" in jQuery .live () - Methode
Vorsichtig sein mit rowIds. Wenn Sie das Sortieren, hinzufügen und entfernen von Zeilen, können Sie sich finden, schreiben einige knifflige jQuery zu konvertieren, Datensatz-ids zu iRows oder Zeile von zahlen.
Wenn Sie wie ich sind, und Sie ging mit einzelne Zelle Bearbeiten, werden Sie wollen, ändern Sie die afterEditCell Auslöser mit etwas wie:
Hoffe, das hilft..
Dies ist ziemlich schrecklich, aber seine mein nehmen auf diesem problem, und das prob ist ein bisschen leichter und mehr Generika - es drückt die EINGABETASTE programmgesteuert, wenn das Element den Fokus verliert 🙂
Fügen Sie diesen code in Ihre jqgrid-setup-code.
Es wird davon ausgegangen, dass die zuletzt bearbeitete Element ist das einzige, was mit .Bearbeiten-Zelle als Elternteil td.
Meine Lösung war, die grundlegenden jQuery-Selektoren und Ereignisse unabhängig von der Gitter zu erkennen, diese Veranstaltung. Ich benutze den live-und blur-events auf die Textfelder im grid zu erfassen, die Veranstaltung. Die beiden Ereignisse werden nicht unterstützt in Kombination mit jedem anderen, so dass dieser hack wurde die Lösung:
Simulation von "focus" und "blur" in jQuery .live () - Methode
Ich weiß, diese Frage ist alt, aber die Antwort ist veraltet.
Einer globalen variable namens lastsel erstellt werden muss und die folgenden Hinzugefügt, um den jqGrid-code
Ich hatte das gleiche Problem und habe versucht, die oben genannten Antworten. Am Ende ging ich mit einer Lösung, fügt einen "Enter" - Taste drücken, wenn der Benutzer das verlassen der tab.
Anstatt selectRow verwenden CellSelect.
//saveDataFromTable() ist die Funktion, welche überprüft meine Daten.