Asp.Net текстовое поле, как обернуть расщепленное слово вместо перехода к следующей строке - PullRequest
3 голосов
/ 19 мая 2011

Я использую Asp.Net и VB в Visual Studio 2010

Привет, я использую System.Web.UI.WebControls.TextBox со свойством wrap, установленным на "true", моя проблема в том, что когда он переносит слово, он перемещает все слово на следующую строку, что я хочу сделать, это для переноса текстового поля, но не для перемещения всего слова, просто перейдите к новой строке, когда текст достигнет правой части текстового поля.

Например, представьте текстовое поле шириной 10 символов.

Вот что происходит:

0123456789  
i am a  
textbox 

Это то, что мне нужно:

0123456789  
i am a tex  
tbox

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

Я думал об установке обтекания на false и использовании события onTextChanged, чтобы проверить длину текста и вручную запустить новую строку. Есть ли более простой способ сделать это?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Это проблема реализации веб-браузера, а не проблема, которую можно решить с помощью ASP.NET.

Теоретически, единственный способ контролировать это - запускать JavaScript на стороне клиента, но маршрут потребует некоторой героики. Вам нужно будет

  1. Попросите JS рассчитать длину введенного текста
  2. Пусть JS сохранит исходное значение текста в скрытом поле INPUT с каким-либо разделителем строк (например, "i am a tex<LINEBREAK>tbox"), чтобы вы могли отличить реальные разрывы строк от пользователя по разрывам строк, что JS вставляет, чтобы отрубить конец строки
  3. При отправке формы не используйте то, что находится в фактическом текстовом поле, а скорее то, что находится в скрытом поле INPUT, с <LINEBREAK> s, замененными пустыми строками.

Но все вышеперечисленное потребует огромных усилий, большого количества испытаний в различных браузерах и нарушит некоторые встроенные функции ASP.NET (т. Е. Не использование содержимого текстового поля, а клиента). боковой вход).

0 голосов
/ 19 февраля 2016

Замените все пробелы на &nbsp;, и они будут перенесены в соответствии с вашими требованиями.

Однако поведение завершается ошибкой, если пользователь вводит какие-либо фактические пробелы в текстовую область.

Я не проверял возвращаемое значение на post-back. Вам нужно будет проверить результаты постбэка с включенными изменениями и без них.

...