Как я могу сделать текстовое поле Sharepoint (input, type=text) динамически многострочным?

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

Я создаю свои элементы управления / элементы динамически, и я создаю этот элемент следующим образом:

boxPaymentExplanation = new TextBox()
{
    CssClass = "dplatypus-webform-field-input"
};
boxPaymentExplanation.Width = 660;
boxPaymentExplanation.Style.Add("display", "inline-block");

Я попытался добавить эту строку в надежде на достижение этой функциональности:

boxPaymentExplanation.Style.Add("TextMode", "MultiLine");

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

ОБНОВИТЬ

Это работает jQuery (полученный по ссылке, предоставленной Кристофером Дженнингсом):

$(document).on("keyup", "[id$=explainPaymentTextBox]", function (e) {
    while ($(this).outerHeight() < this.scrollHeight + parseFloat($(this).css("borderTopWidth")) + parseFloat($(this).css("borderBottomWidth"))) {
        $(this).height($(this).height() + 1);
    };
});

... вместе с этим C#:

boxPaymentExplanation = new TextBox()
{
    CssClass = "dplatypus-webform-field-input",
    ID = "explainPaymentTextBox"
};
boxPaymentExplanation.Width = 660;
boxPaymentExplanation.Style.Add("display", "inline-block");
boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;

ОБНОВЛЕНИЕ 2

К сожалению, хотя вышеприведенный jQuery "спуск в mælström-esque" работает для динамического увеличения текстового поля, он не работает, если пользователь удаляет текст; Я хотел бы, чтобы это также уменьшилось, когда это произойдет...

1 ответ

Решение

Вы на правильном пути. Вам необходимо установить свойство TextMode в Multiline. Однако вы выбрали добавление атрибута тега HTML, а не установку свойства.NET. Просто замени boxPaymentExplanation.Style.Add("TextMode", "MultiLine"); с boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;

Другие вопросы по тегам