Как я могу сделать текстовое поле 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;