Подтвердить что ты не робот

Как удалить перенос слов из textarea?

моя простая текстовая область не показывает горизонтальную полосу при переполнении текста. Он переносит текст для новой строки. Итак, как удалить wordwrap и отобразить горизонтальную полосу при переполнении текста?

4b9b3361

Ответ 1

Textareas не следует обертывать по умолчанию, но вы можете установить wrap = "soft", чтобы явно отключить wrap:

<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>

EDIT: атрибут "wrap" официально не поддерживается. Я получил его из немецкую страницу SELFHTML (английский источник здесь), в котором говорится, что IE 4.0 и Netscape 2.0 поддерживают его. Я также тестировал его в FF 3.0.7, где он работает так, как предполагалось. Здесь все изменилось, SELFHTML теперь является вики, а ссылка на исходный текст на английском языке мертва.

EDIT2: Если вы хотите убедиться, что все браузер поддерживает его, вы можете использовать CSS для изменения поведения обхода:

Используя каскадные таблицы стилей (CSS), вы можете добиться такого же эффекта с помощью white-space: nowrap; overflow: auto;. Таким образом, атрибут wrap можно считать устаревшим.

Из здесь (кажется, отличная страница с информацией о textarea).

EDIT3: я не уверен, когда он изменился (согласно комментариям, должно быть, было около 2014 года), но wrap теперь является официальным атрибутом HTML5, см. w3schools. Изменен ответ, чтобы соответствовать этому.

Ответ 2

textarea {
  white-space: pre;
  overflow-wrap: normal;
  overflow-x: scroll;
}

white-space: nowrap также работает, если вам небезразличен пробел, но, конечно, вы не хотите, чтобы это было, если вы работаете с кодом (или с отступом абзаца или любым контентом, где может быть намеренно несколько пробелов). поэтому я предпочитаю pre.

overflow-wrap: normal (был word-wrap в старых браузерах) необходим, если какой-либо родительский параметр изменил этот параметр; он может вызвать обертывание, даже если pre установлен.

также - вопреки принятому в настоящее время ответам - textareas do часто обматываются по умолчанию. pre-wrap кажется по умолчанию в моем браузере.

Ответ 3

Для меня работает следующее решение на основе CSS:

<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>

Ответ 4

Я нашел способ сделать текстовое поле со всем этим, работая одновременно:

  • С горизонтальной полосой прокрутки
  • Поддержка многострочного текста
  • Текст не обертывается

Хорошо работает:

  • Chrome 15.0.874.120
  • Firefox 7.0.1
  • Opera 11.52 (1100)
  • Safari 5.1 (7534.50)
  • IE 8.0.6001.18702

Позвольте мне объяснить, как я это понимаю: я использовал встроенный инструмент инспектора Chrome, и я видел значения в стилях CSS, поэтому я стараюсь использовать эти значения вместо обычных... проб и ошибок до тех пор, пока я не уменьшу их до минимума и здесь это для тех, кто хочет этого.

В разделе CSS я использовал именно это для Chrome, Firefox, Opera и Safari:

textarea {
  white-space:nowrap;
  overflow:scroll;
}

В разделе CSS я использовал именно это для IE:

textarea {
  overflow:scroll;
}

Это было немного сложно, но есть CSS.

Тег (x) HTML:

<textarea id="myTextarea" rows="10" cols="15"></textarea>

И в конце раздела <head> JavaScript выглядит следующим образом:

 window.onload=function(){
   document.getElementById("myTextarea").wrap='off';
 }

JavaScript предназначен для того, чтобы сделать валидатор W3C XHTML 1.1 Strict, поскольку атрибут wrap не является официальным и, следовательно, не может быть (x) HTML-тегом напрямую, но большинство браузеров обрабатывают его, поэтому после загрузки страницы он устанавливает этот атрибут.

Надеюсь, что это можно протестировать в других браузерах и версиях и помочь кому-то улучшить его и сделать его полностью кросс-браузером для всех версий.

Ответ 5

Если вы можете использовать JavaScript, сегодня может быть самым переносимым вариантом (протестирован Firefox 31, Chrome 36):

http://jsfiddle.net/cirosantilli/eaxgesoq/

<style>
  div#editor {
    white-space: pre;
    word-wrap: normal;
    overflow-x: scroll;
  }
<style>
<div contenteditable="true"></div>

Кажется, нет стандартного портативного решения для CSS:

Кроме того, если вы можете использовать Javascript, вы можете также использовать редактор 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>

Вероятно, работает с ACE, потому что он не использует textarea, который не указан/несовместим, но не уверен, использует ли он contenteditable.

Ответ 6

Этот вопрос кажется самым популярным для отключения textarea wrap. Однако по состоянию на апрель 2017 года я обнаружил, что IE 11 (11.0.9600) будет не отключать перенос слов любым из указанных выше решений.

Единственное решение, которое работает для IE 11, - это wrap="off". wrap="soft" и/или различные атрибуты CSS, такие как white-space: pre, изменяют, где IE 11 решает обернуть, но он все еще где-то обертывается. Обратите внимание, что я тестировал это с помощью Просмотр совместимости. IE 11 довольно совместим с HTML 5, но не в этом случае.

Таким образом, для достижения линий, сохраняющих их пробелы и выходящих из правой части, я использую:

<textarea style="white-space: pre; overflow: scroll;" wrap="off">

Это, похоже, работает в Chrome и Firefox. Я не защищаю использование pre-HTML 5 wrap="off", просто говоря, что это похоже на IE 11.