HTML pokazany poniżej,
<input type="text"/>
jest wyświetlany w przeglądarce w następujący sposób:
Kiedy dodam następujący tekst,
Szybki brązowy lis przeskoczył nad leniwym psem.
Korzystając z poniższego kodu HTML,
<input type="text" value="The quick brown fox jumped over the lazy dog."/>
jest wyświetlany w przeglądarce takiej jak:
Ale chciałbym, żeby był wyświetlany w takiej przeglądarce:
Chcę, aby tekst w moim elemencie wejściowym był zawijany. Czy można to osiągnąć bez textarea?
Odpowiedzi:
To jest
textarea
jego zadanie - wielowierszowe wprowadzanie tekstu.input
Nie zrobi ; nie został do tego przeznaczony.Więc użyj
textarea
. Oprócz różnic wizualnych, dostęp do nich można uzyskać za pomocą JavaScript w ten sam sposób (value
właściwość use ).Możesz uniemożliwić wprowadzanie nowych linii za pośrednictwem
input
wydarzenia i po prostu używającreplace(/\n/g, '')
.źródło
<textarea>
nie będzie współpracować z rzeczy jak autouzupełniania jQuery, ale wystarczy zmienić<input>
się<textarea>
i to wszystko, co jest niezbędne. Brawo za standardy!Słowo Break będzie naśladować część intencji
input[type=text] { word-wrap: break-word; word-break: break-all; height: 80px; }
<input type="text" value="The quick brown fox jumped over the lazy dog" />
Aby obejść ten problem, to rozwiązanie straciło skuteczność w niektórych przeglądarkach. Sprawdź demo: http://cssdesk.com/dbCSQ
źródło
Można nie używać wejście do niego, trzeba użyć zamiast textarea. Użyj textarea z
wrap="soft"
kodem i opcjonalnych pozostałych atrybutów, takich jak ten:<textarea name="text" rows="14" cols="10" wrap="soft"> </textarea>
Atrybuty: Aby ograniczyć ilość zawartego w nim tekstu, na przykład do „40” znaków, możesz dodać atrybut w
maxlength="40"
następujący sposób:<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40"></textarea>
Aby ukryć styl przewijania. jeśli użyjesz tylkooverflow:scroll;
luboverflow:hidden;
luboverflow:auto;
będzie to miało wpływ tylko na jeden pasek przewijania. Jeśli chcesz mieć różne atrybuty dla każdego paska przewijania, użyj atrybutów takich jak tenoverflow:scroll; overflow-x:auto; overflow-y:hidden;
w obszarze stylu: Aby uniemożliwić zmianę rozmiaru obszaru tekstu, możesz użyć stylu wresize:none;
następujący sposób:<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40" style="overflow:hidden; resize:none;></textarea>
W ten sposób możesz mieć lub przykładowo obszar tekstu z 14 wierszami i 10 kolumnami z zawijaniem wyrazów i maksymalną długością znaków wynoszącą „40”, który działa dokładnie tak samo, jak pole tekstu wejściowego, ale z wierszami i bez użycia tekstu wejściowego.
UWAGA: textarea działa z wierszami w przeciwieństwie do danych wejściowych,
<input type="text" name="tbox" size="10"></input>
które nie mają działają z wierszami.źródło
Aby utworzyć tekst wejściowy, w którym wartość pod maską jest ciągiem jednowierszowym, ale jest prezentowana użytkownikowi w formacie zawijanym w słowa, możesz użyć atrybutu contenteditable na jednym
<div>
lub innym elemencie:const el = document.querySelector('div[contenteditable]'); // Get value from element on input events el.addEventListener('input', () => console.log(el.textContent)); // Set some value el.textContent = 'Lorem ipsum curae magna venenatis mattis, purus luctus cubilia quisque in et, leo enim aliquam consequat.'
div[contenteditable] { border: 1px solid black; width: 200px; }
<div contenteditable></div>
źródło