在input type ="text"元素HTML/CSS中包装文本

Web*_*ner 66 html input word-wrap

HTML如下所示,

<input type="text"/>
Run Code Online (Sandbox Code Playgroud)

在浏览器中显示如下:


当我添加以下文字时,

快速的棕色狐狸跳过懒狗.

使用下面的HTML,

<input type="text" value="The quick brown fox jumped over the lazy dog."/>
Run Code Online (Sandbox Code Playgroud)

它显示在浏览器中,如下所示:


但我希望它能像这样在浏览器中显示:


我希望我的input元素中的文本换行.这可以在没有textarea的情况下完成吗?

ale*_*lex 50

这是textarea工作 - 用于多行文本输入.该input 不会去做 ; 它不是为了做到这一点而设计的.

所以用一个textarea.除了它们的视觉差异,它们也可以通过JavaScript以相同的方式访问(使用value属性).

您可以阻止通过input事件输入换行符,只需使用replace(/\n/g, '').

  • 这并没有真正回答如何在输入过程中显示包装时收集单行输入的问题. (50认同)
  • 如上所述:包裹一行!==一个多行字符串.我不确定为什么这是接受的答案,因为它没有回答这个问题. (5认同)
  • @ehdv:这是下一个最好的事情,因为被问到的问题没有答案. (3认同)
  • 一个主要的问题是文本区域会抑制移动设备上的“执行”按钮。 (2认同)
  • @alex 没错。所以如果你想要真正的多行输入,那么 textarea 更好,但如果你只是想要自动换行输入,那么 css 解决方案更好。 (2认同)
  • 我想说的是 `&lt;textarea&gt;` 不能与 jQuery 的自动完成功能一起使用,但只需将 `&lt;input&gt;` 更改为 `&lt;textarea&gt;` 就可以了。标准万岁! (2认同)

Thi*_*edo 38

Word Break将模仿一些意图

input.break {
    word-wrap: break-word;
    word-break: break-all;
    height: 80px;
}
Run Code Online (Sandbox Code Playgroud)

  • 溶液变得过时至少从铬50 :( (28认同)
  • 这是真正的答案 (6认同)
  • 我刚刚在Firefox 43.0.4中对它进行了测试,但它在Safari 9和Chrome 48中无法正常工作:http://www.cssdesk.com/dbCSQ (5认同)
  • 忘记这个解决方案:不适用于 Chrome 74/75、Firefox 63/67、Edge 42、IE 11 和 UCBrowser 7.0(但适用于 GNOME Web 3.28 - AppleWebKit/605.1.15) (5认同)
  • 演示链接现在也已损坏 (5认同)
  • @JasonSperske的附加演示对我来说不适用于Firefox 45而不是Chrome 50. (4认同)

Sam*_*ann 10

要创建一个文本输入,其中引擎盖下的值是单行字符串但以自动换行格式呈现给用户,您可以在 a或其他元素上使用contenteditable属性<div>

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.'
Run Code Online (Sandbox Code Playgroud)
div[contenteditable] {
  border: 1px solid black;
  width: 200px;
}
Run Code Online (Sandbox Code Playgroud)
<div contenteditable></div>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这允许富文本格式,例如,我可以通过选择单词并按 Ctrl+B 将其标记为粗体。 (7认同)

See*_*oad 7

不能使用输入,而需要使用textarea。将textarea与wrap="soft"代码以及其他可选属性结合使用,如下所示:

<textarea name="text" rows="14" cols="10" wrap="soft"> </textarea>
Run Code Online (Sandbox Code Playgroud)

属性:例如,要将其中的文本数量限制为“ 40”个字符,可以添加如下属性maxlength="40"<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40"></textarea> 隐藏滚动样式。如果你只使用overflow:scroll;overflow:hidden;overflow:auto;将只需要一个滚动条的影响。如果每个滚动条都需要不同的属性,请overflow:scroll; overflow-x:auto; overflow-y:hidden;在样式区域中使用以下属性:要使文本区域不可调整大小,可以使用如下样式resize:none;

<textarea name="text" rows="14" cols="10" wrap="soft" maxlength="40" style="overflow:hidden; resize:none;></textarea>
Run Code Online (Sandbox Code Playgroud)

这样,您可以拥有一个示例文本区域,该区域具有14行和10列,带有自动换行,最大字符长度为“ 40”个字符,其作用与输入文本框完全相同,但是具有行而不是不使用输入文本。

注: textarea的作品与不像在输入行<input type="text" name="tbox" size="10"></input>即到由工作,在所有行。