25

Html Textarea elements only wrap when they reach a space or tab character. This is fine, until the user types a looooooooooooooooooooooong enough word. I'm looking for a way to strictly enforce line breaks (eg.: even if it results in "loooooooooooo \n ooooooooooong").

alt text

The best I've found is to add a zero-width unicode space after every letter, but this breaks copy and paste operations. Anyone know of a better way?

Note: I'm referring to the "textarea" element here (i.e.: the one that behaves similarly to a text input) - not just a plain old block of text.

Spooky
  • 2,966
  • 8
  • 27
  • 41
username
  • 18,800
  • 11
  • 41
  • 45

7 Answers7

18

The CSS settings word-wrap:break-word and text-wrap:unrestricted appear to be CSS 3 features. Good luck finding a way to do this on current implementations.

Kim Reece
  • 1,260
  • 9
  • 11
  • 1
    just realized Facebook does a pretty good job with their forms, I'll have to get in there and see what they're doing. Either that or wait till browsers support the attributes you mention - breaks my hard to waste a thousand lines of javascript on something that will eventually be so easy – username Mar 04 '09 at 00:12
  • It won't be long (yeh yeh yeh yeh)! New developer features in Firefox 3.1 "word-wrap: This newly-supported property lets content specify whether or not lines may be broken within words in order to prevent overflow when an otherwise unbreakable string is too long to fit on one line." – username Mar 05 '09 at 22:01
  • Excellent! I'm glad this is coming together fast; it's such a silly feature to be without. – Kim Reece Mar 06 '09 at 06:40
8
Community
  • 1
  • 1
Sören Kuklau
  • 19,454
  • 7
  • 52
  • 86
5

Breaking long words at textarea width size:

1) for modern browsers:

textarea { word-break: break-all; }

2) for IE8 compatibility add:

textarea { -ms-word-break: break-all; }

https://msdn.microsoft.com/en-us/library/ms531184%28v=vs.85%29.aspx

3) add IE11 compatibility hack:

Internet Explorer 11 word wrap is not working

@media all and (-ms-high-contrast:none) {
*::-ms-backdrop, textarea { white-space: pre; } 
}

This code it's working fine on:

-IE 11, Chrome 51, Firefox 46 (Windows 7);

-IE 8, Chrome 49, Firefox 18 (Windows Xp);

-Edge 12.10240 , Opera 30 (Windows 10);

crisc2000
  • 1,082
  • 13
  • 19
2

There's the non-standard element wbr that is supported by at least

Firefox, http://developer.mozilla.org/En/HTML/Element

Internet Explorer, http://msdn.microsoft.com/en-us/library/ms535917(VS.85).aspx

and Opera.

VolkerK
  • 95,432
  • 20
  • 163
  • 226
0

The most elegant way is to use wrap="soft" for wrapping entire words or wrap="hard" for wrapping by character or wrap="off" for not wrapping at all though the last one wrap="off" is often not needed as automatically the browser uses automatically as if it was wrap="off".
EXAMPLE:

<textarea name="tbox" cols="24" rows="4" wrap="soft"></textarea>
David Glickman
  • 713
  • 1
  • 11
  • 18
SeekLoad
  • 973
  • 1
  • 9
  • 33
0

I tested the <wbr>, &#8203; and &shy; techniques. All three worked well in IE 7, Firefox 3 and Chrome.

The only one that did not break the copy/paste was the <wbr> tag.

Marcio Aguiar
  • 14,231
  • 6
  • 39
  • 42
0

According to my tests, only Firefox has the described behavior among current browsers. So I guess your best bet is to wait for the imminent release of Firefox 3.1 to solve your problem :)

Alsciende
  • 26,583
  • 9
  • 51
  • 67