Wenn Sie Text in ein Textfeld eingeben und dieser breiter wird als der Bereich, wird der Text in die nächste Zeile eingeschlossen. Gibt es eine Möglichkeit, programmgesteuert zu bestimmen, wann dies geschieht?Wie kann ich erkennen, wenn eine Zeile automatisch in ein Textfeld eingepackt wird?
Antwort
Es gibt kein eigentliches Ereignis ausgelöst, wenn die Verpackung auftritt, aber Sie können eine Lösung hacken, wenn Sie die Breite des Textbereiches kennen.
Hören Sie auf das Änderungsereignis auf den Textbereich und übertragen den Text in ein div, dass hüllt es ist Inhalt;
<div class="textwidth"></div>
Mit Stil:
.textwidth {
position: absolute;
visibility: hidden;
height: auto;
width: auto;
}
Berechnen Sie die Breite des div mit dem Textinhalt und vergleichen Sie das mit der konstanten Breite des Textfeld:
$('textarea').on('keyup', function() {
var lastLine = $(this).val().split('/n').pop();
var width = $('.textwidth').text(lastLine).width();
if (width > $('textarea').width()) {
// fire wrap event
}
});
Hier ist ein bisschen ein schlampige Geige, die Ihnen eine Vorstellung geben sollte, wie man weiter: http://jsfiddle.net/cXbAh/1/
Das scheint so zu funktionieren. Es ist jedoch wichtig zu beachten, dass die beiden Schriftarten genau gleich sein müssen oder es Fehlzündungen gibt. –
@ChristopherCortez Monospace würde es auch viel einfacher machen! – Jivings
In der Tat. Ich habe versucht, eine robustere Lösung mit Ihrem Code als Grundlage zu finden, aber jetzt bin ich auf Browser-Unzuverlässigkeit (nicht überraschend). –
Sie ca n Messen Sie jede Linienbreite mit einem "versteckten" Bereich.
Wenn die Linienbreite größer als die Breite TextArea- dann die Linie
function textWidth(txt, font, padding) {
$span = $('<span></span>');
$span.css({
font:font,
position:'absolute',
top: -1000,
left:-1000,
padding:padding
}).text(txt);
$span.appendTo('body');
return $span.width();
}
Bei Firefox 42 scheint es nicht zu funktionieren – fffred
- 1. Wie kann ich eine neue Zeile in einem Textfeld bekommen?
- 2. Wie legen Sie den Fokus automatisch auf ein Textfeld fest, wenn eine Webseite geladen wird?
- 3. Wie lösche ich das Textfeld, wenn eine Taste gedrückt wird?
- 4. Wie wird Textbereichstext automatisch in die nächste Zeile gesetzt, wenn die Zeile fertig ist?
- 5. Wie kann ich erkennen, wenn ein iAd gelöscht wurde?
- 6. Wie kann ich die Tageslichtersparnis automatisch in PHP erkennen?
- 7. Wie erkennen Sie ein Keycombo in einem Symbolleisten-Textfeld?
- 8. Qt-Signal in einem ifdef eingepackt
- 9. Wie kann ich Proxy-Einstellungen vom Systemdienst automatisch erkennen?
- 10. Wie speichere ich ein mehrzeiliges Textfeld als eine Zeile in eine Textdatei?
- 11. Wie erkennen, wenn eine Tastenkombination in Javascript gedrückt wird
- 12. Wie kann ein Add-In erkennen, wenn eine Lösung geladen wird?
- 13. Wie kann ich automatisch eine Enter-Taste drücken, wenn eine bestimmte Aktion ausgeführt wird?
- 14. Erkennen, wenn ein Python-Skript interaktiv in Ipython ausgeführt wird
- 15. jQuery -. Erkennen, wenn ein Benutzer aus einer Eingabetyp Textfeld klickt
- 16. Wie kann ich ein globales Ziehereignis erkennen?
- 17. Wie man ein Textfeld erstellen kann
- 18. Erkennen, wenn ein Registerkartenelement gedrückt wird
- 19. Textfeld automatisch ausfüllen asp.net
- 20. Erkennen, wenn ein Fragment gezeichnet wird?
- 21. Kann ich eine Aufgabe automatisch starten, wenn ein Ordner geöffnet wird?
- 22. Wie kann ich ein Textfeld in ein anderes Textfeld in HTML einbetten?
- 23. Wie kann ein Linux-Zeichengerätetreiber erkennen, wenn ein Programm, das es verwendet, abnormal beendet wird?
- 24. Wie kann ich erkennen, wenn eine Ausnahme global in Java ausgelöst wurde?
- 25. Wie bekomme ich die ausgewählte Zeile in einem Textfeld?
- 26. Wie kann ich in meiner benutzerdefinierten Ansicht ein Retuschieren erkennen?
- 27. Ich erhalte eine Fehlermeldung, wenn ein Textfeld aus form1 Aufruf
- 28. Wie kann ich eine Variable in einem dynamischen Textfeld anzeigen?
- 29. Swift - wie kann ich im Textfeld mehr als eine richtige Antwort im Quiz erkennen?
- 30. Wie wird ein Formular automatisch gedruckt, wenn ein neues Exemplar in einer SharePoint-Liste veröffentlicht wird?
gewickelt wird, wenn Sie über den Boden gehen die Scrollheight ändert dann, aber ich glaube nicht nur selbst etwas tut Einwickeln . Ich hoffe, ich liege falsch. – dandavis
Ich dachte, ich könnte ['Range.getBoundingClientRect'] (https://developer.mozilla.org/en-US/docs/DOM/element.getBoundingClientRect) verwenden, konnte kein funktionierendes Beispiel erstellen. Sie könnten versuchen, den '