Entwickler-Ecke
Wünsche, Anregungen & Kritik - Button "Eingabefeld verkleinern" von Inline-Edit
FinnO - Mi 26.12.12 02:24
Titel: Button "Eingabefeld verkleinern" von Inline-Edit
Moin,
Der Button "Eingabefeld verkleinern" vom Inline-Edit hat keine Funktion. Außerdem weiß ich nicht, ob es gewollt ist, dass der Button "Eingabefeld vergrößern" das Eingabefeld auf ca. 3-5km höhe ausdehnen soll. Scroll-Job!
LG
Martok - Mi 26.12.12 04:35
Ahem.
FinnO hat folgendes geschrieben : |
Außerdem weiß ich nicht, ob es gewollt ist, dass der Button "Eingabefeld vergrößern" das Eingabefeld auf ca. 3-5km höhe ausdehnen soll. |
Genau genommen sind es 205km... äh Zeilen. Und warum das so ist, ist so ein schöner Anfängerfehler dass ich das hier echt mal ausbreiten muss. Immerhin bin ich der, der immer anderen vorwirft, dass sie dynamische Typisierung nicht verstanden haben wenn sie genau das an PHP kritisieren, da muss ich dann wohl mal diesen "Martok" zusammenfalten, der das hier verbrochen hat ;)
Sehen wir uns das mal an.
JavaScript-Quelltext
1: 2: 3: 4: 5: 6: 7:
| PostEdit.ChangeInlineEditHeight = function (post_id, value) { var rows = $("#message"+post_id).attr("rows"); if (rows + value >= 5) { $("#message"+post_id).attr("rows", rows + value); } } |
Na, wer siehts schon?
Die beide Parameter sind Zahlen; jQuery-Funktion
attr() gibt den Wert eines Attributs als String zurück. Beim "Verlängern" ist value=5, beim "Verkürzen" ist value=-5
Der
+-Operator entscheidet anhand des ersten (linken) Typs, ob er Addition oder Verkettung macht. Und was ist das hier? Richtig, String. Also Verkettung.
Kommen wir also vom Standard von 20 Zeilen, steht da:
Und "20" + (5).toString() ist der String "205".
Spannender ist das beim Einkürzen danach:
JavaScript-Quelltext
1:
| if ("205" + (-5) >= 5) { |
Und "20" + (-5).toString() ist der String "205-5".
>= mit Strings wiederum ist der lexikalische Vergleich. Und da ist "205-5" < "5", da "2" < "5". Und deswegen funktioniert das nicht.
Klarer Anwendungsfall für den Failsafe-Cast "Multiplikation", der nämlich im Gegensatz zu parseInt() bei nicht-Strings nicht
NaN erzeugt.
JavaScript-Quelltext
1:
| var rows = 1 * $("#message"+post_id).attr("rows"); |
Und so steht das da jetzt im Testforum auch ;)
Christian S. - Mi 26.12.12 14:30
Stammt der Quelltext nicht sogar noch von mir? Aber warum hat der mal funktioniert, der ist mindestens seit 2011 unverändert :gruebel:
Aber mal 'ne andere Frage: Gibt es noch irgendeinen Browser, in dem man die Textfelder nicht von Hause aus in der Größe verändern kann? Sprich: Braucht man die Buttons eigentlich noch?
jaenicke - Mi 26.12.12 15:48
Die Buttons sind auf Tablets z.B. durchaus hilfreich, da man die Ecken da zur Vergrößerung nicht so leicht erwischt. Wie viele sie benutzt haben, sieht man aber daran, dass den Fehler niemand bemerkt hat. :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!