Jeditable fügt zusätzliche Leerzeichen um den Text im Textbereich ein

7

Jeditable fügt zusätzliche Leerzeichen um den eigentlichen Text in einem Textbereich für mich ein, wenn ich klicke, um einen Text zu bearbeiten. Wie trimme ich das oder repariere das wirklich?

    
Chirantan 09.04.2010, 07:24
quelle

8 Antworten

18

Sie können nur eine Funktion übergeben, um die zu bearbeitende Zeichenfolge zu trimmen. Verwenden Sie dies in Ihren Einstellungen:

%Vor%     
Greg DeVore 31.01.2012, 21:28
quelle
12

Den Grund gefunden. Und es ist verrückt!

In place edit fügt Platz um den Text herum ein, wenn HTML wie folgt aussieht

%Vor%

Und es wird NICHT Platz um den Text herum einfügen, wenn Ihr HTML so aussieht

%Vor%

Ich frage mich, was das verursacht. Dies ist wahrscheinlich auf den Unterschied in der Art und Weise zurückzuführen, wie der Browser und Javascript den HTML-Code interpretieren.

    
Chirantan 14.04.2010 13:48
quelle
8

Das mag eine alte Nachricht sein, aber ich war mit einem ähnlichen Problem konfrontiert: Ich weiß nicht warum, aber nachdem ich eine bearbeitete Texteingabe gespeichert hatte, wurden beim nächsten Klick 11 Leerzeichen (jedes Mal) eingefügt vor dem bearbeitbaren Text.

Nach vielen Versuchen habe ich dieses Problem gelöst, indem ich die Zeile ~ 239 in der Datei jeditable.js bearbeitet habe:

%Vor%

und ersetzte es durch:

%Vor%

(Per Baloneysammitsch 's Vorschlag)

Beachten Sie, dass ich ziemlich wenig Ahnung habe, was ich mache, aber das schien zu funktionieren! Vielleicht könnte jemand mit mehr Fähigkeiten als ich erklären, woher diese zusätzlichen 11 Räume kommen könnten ...

    
Symmitchry 19.12.2010 23:47
quelle
3

Ich habe dieses Problem mit JEditable 1.7.1 in meiner Anwendung behoben. Die Lösung ist praktisch identisch mit der von Symmitchry.

Ausgehend von Zeile 204 gibt es einen Code-Block, der festlegt, wie JEditable seine Daten laden soll.

%Vor%

Fügen Sie jQuery Trim-Funktion vor der letzten Zeile hinzu (Zeile 239 in meiner Version)), so erhalten Sie:

%Vor%

Der Grund, warum ich es in einen try-catch setze, liegt darin, dass bei der Verwendung von JEditable mit textarea oder Eingabe vom Typ text input_content grundsätzlich eine Zeichenkette ist. Wenn Sie einen Select-Input_Content verwenden, handelt es sich um ein Objekt, das nicht gut darauf getrimmt werden kann.

Es gibt wahrscheinlich einen schöneren Weg, dies zu tun, anstatt einen Versuch-Fang zu verwenden, aber es macht die Arbeit erledigt.

    
Johan Bjorling 17.05.2011 15:40
quelle
1

Hmm, das ist seltsam. Ich bekomme dieses Problem mit Jeditable nicht.

Na ja, jQuery hat eine Trim-Funktion:

%Vor%     
Baloneysammitch 09.04.2010 21:40
quelle
1

Es ist eine Weile her, seit jemand auf diesen Beitrag geantwortet hat, aber ich stieß auf das gleiche Problem und dachte, dass ich meine zwei Cent wert hinzufügen würde. Dieses Problem trat nur bei mir in Firefox und Safari auf. IE und Chrome scheinen dieses Problem nicht zu haben.

Ich habe versucht, Symmitchrys Vorschlag von $.trim() in Zeile 239 zu machen, und das hat bei mir nicht funktioniert. Also habe ich ein Backtracking durchgeführt und herausgefunden, dass das Problem zuerst um Zeile 176 mit der Zeile erscheint:

self.revert = $(self).html();

Da dies ein jQuery-Aufruf ist, frage ich mich, ob es ein Problem mit der Interaktion von jquery mit den oben genannten Browsern gibt. Nicht sicher ...

Ich habe festgestellt, dass das Hinzufügen von $.trim() zu diesem Zeitpunkt wie erwartet für mich funktioniert hat.

Ich fand, wie Chirantan das getan hat, wie das html gelegt wurde machte einen Unterschied, wenn die Räume da waren oder nicht.

    
John Ten Cate 24.03.2011 13:28
quelle
0

Dies passiert, wenn die Formatierung Leerzeichen enthält. jEditable behandelt es mit Respekt und verändert nicht Ihren Inhalt. Zum Beispiel in VS IDE Auto-Format schafft massive Lücken, in denen Rendering HTML ist in Ordnung.

Wenn Sie jQuery verwenden, trimmen Sie das DOM vor dem Aufrufen von jEditable, wenn Sie sicherstellen möchten, dass es nirgendwo Leerzeichen gibt.

%Vor%     
ppumkin 10.07.2012 14:34
quelle
0

In meinem Fall war die Lösung, die </input> in Zeile 390 in der Datei zu entfernen jquery.jeditable.js. Zeile vorher: var input = $('<input type="hidden"></input>'); Linie, die für mich funktioniert: var input = $('<input type="hidden">');

    
Andreas Groneberg 14.02.2015 19:11
quelle

Tags und Links