Come rimuovere il ritorno a capo automatico da textarea?
Domanda
la mia semplice textarea non mostra una barra orizzontale quando il testo trabocca. Avvolge il testo per una nuova riga. Quindi, come posso rimuovere il wordwrap e visualizzare la barra orizzontale quando il testo trabocca?
Soluzione
Textareas non dovrebbe essere a capo per impostazione predefinita, ma puoi impostare wrap = " soft " per disabilitare esplicitamente il ritorno a capo:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
EDIT: " wrap " l'attributo non è ufficialmente supportato. L'ho preso dalla la pagina SELFHTML tedesca (una fonte inglese è qui ) che dice che IE 4.0 e Netscape 2.0 lo supportano. L'ho anche testato in FF 3.0.7 dove funziona come previsto. Le cose sono cambiate qui, SELFHTML ora è un wiki e il link alla fonte inglese è morto.
EDIT2: se vuoi essere sicuro che ogni browser lo supporti, puoi usare i CSS per cambiare il comportamento di avvolgimento:
Usando Cascading Style Sheets (CSS), puoi ottenere lo stesso effetto con
white-space: nowrap; overflow: auto;
. Pertanto, l'attributo a capo può essere considerato obsoleto.
Da qui (sembra essere una pagina eccellente con informazioni su textarea).
EDIT3: non sono sicuro quando sia cambiato (secondo i commenti, deve essere stato intorno al 2014), ma wrap
ora è un attributo HTML5 ufficiale, vedi w3schools . Modificata la risposta in modo che corrisponda a questa.
Altri suggerimenti
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
funziona anche se non ti interessa lo spazio bianco, ma ovviamente non lo vuoi se stai lavorando con codice (o paragrafi rientrati o qualsiasi contenuto in cui potrebbero esserci deliberatamente più spazi) .. quindi preferisco pre
.
overflow-wrap: normal
(era word-wrap
nei browser meno recenti) è necessario nel caso in cui un genitore abbia modificato tale impostazione; può causare il wrapping anche se è impostato pre-wrap
.
anche - contrariamente alla risposta attualmente accettata - le textareas esegui spesso vanno a capo automaticamente. <=> sembra essere l'impostazione predefinita sul mio browser.
La seguente soluzione basata su CSS funziona per me:
<html>
<head>
<style type='text/css'>
textarea {
white-space: nowrap;
overflow: scroll;
overflow-y: hidden;
overflow-x: scroll;
overflow: -moz-scrollbars-horizontal;
}
</style>
</head>
<body>
<form>
<textarea>This is a long line of text for testing purposes...</textarea>
</form>
</body>
</html>
Ho trovato il modo di creare un'area di testo con tutto questo allo stesso tempo:
- Con barra di scorrimento orizzontale
- Supporto di testo multilinea
- Testo non a capo
Funziona bene su:
- Chrome 15.0.874.120
- Firefox 7.0.1
- Opera 11.52 (1100)
- Safari 5.1 (7534.50)
- IE 8.0.6001.18702
Lasciami spiegare come ci arrivo: stavo usando lo strumento integrato di inspector Chrome e ho visto i valori sugli stili CSS, quindi provo questi valori, anziché quelli normali ... trial & amp; errori finché non l'ho ridotto al minimo ed eccolo per chiunque lo desideri.
Nella sezione CSS ho usato solo questo per Chrome, Firefox, Opera e Safari:
textarea {
white-space:nowrap;
overflow:scroll;
}
Nella sezione CSS ho usato solo questo per IE:
textarea {
overflow:scroll;
}
È stato un po 'complicato, ma c'è il CSS.
Un tag (x) HTML come questo:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
E alla fine della sezione <head>
un JavaScript come questo:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
JavaScript serve a rendere il validatore W3C che passa XHTML 1.1 rigoroso, poiché l'attributo wrap non è ufficiale e quindi non può essere direttamente un tag (x) HTML, ma la maggior parte dei browser lo gestisce, quindi dopo aver caricato la pagina imposta quell'attributo .
Spero che questo possa essere testato su più browser e versioni e aiutare qualcuno a migliorarlo e renderlo completamente cross-browser per tutte le versioni.
Se puoi usare JavaScript, oggi potrebbe essere l'opzione più portatile (testato Firefox 31, Chrome 36):
- un div con
contenteditable="true"
- gli stili proposti da parzialmente
- Invio del modulo JavaScript al clic del pulsante: Come inviare un modulo utilizzando javascript?
http://jsfiddle.net/cirosantilli/eaxgesoq/
<style>
div#editor {
white-space: pre;
word-wrap: normal;
overflow-x: scroll;
}
<style>
<div contenteditable="true"></div>
Sembra che non ci sia una soluzione CSS standard portatile:
-
L'attributo
-
wrap
non è standard -
white-space: pre;
non funziona per Firefox 31 pertextarea
. Fiddle , richiesta di funzionalità aperta .
Inoltre, se puoi usare Javascript, puoi anche usare l'editor ACE:
http://jsfiddle.net/cirosantilli/bL9vr8o8/
<script src="http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
<div id="editor">content</div>
<script>
var editor = ace.edit('editor')
editor.renderer.setShowGutter(false)
</script>
Probabilmente funziona con ACE perché non utilizza un contenteditable
che non è specificato / implementato in modo incoerente, ma non è sicuro che sia utilizzato <=>.
Questa domanda sembra essere la più popolare per disabilitare textarea
avvolgere. Tuttavia, a partire da aprile 2017 trovo che IE 11 (11.0.9600) non disabiliterà il ritorno a capo automatico con una delle soluzioni di cui sopra.
La unica soluzione che funziona per IE 11 è wrap="off"
. wrap="soft"
e / o i vari attributi CSS come white-space: pre
cambiano dove IE 11 sceglie di avvolgere ma si avvolge ancora da qualche parte. Tieni presente che l'ho provato con o senza Visualizzazione compatibilità . Internet Explorer 11 è abbastanza compatibile con HTML 5, ma non in questo caso.
Quindi, per ottenere linee che mantengano il loro spazio bianco e vadano dal lato destro che sto usando:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
Fortunatamente questo sembra funzionare in Chrome & amp; Anche Firefox. Non sto difendendo l'uso di pre-HTML 5 <=>, sto solo dicendo che sembra essere richiesto per IE 11.