【发布时间】:2015-09-04 17:38:03
【问题描述】:
我希望我的 Web 部件上的文本框可以根据需要垂直增长。也就是说,除非用户为该行输入太多文本,否则它将是一行,此时它会自动换行并垂直增长以适应用户的详细程度。
我正在动态创建我的控件/元素,并且我像这样创建这个元素:
boxPaymentExplanation = new TextBox()
{
CssClass = "dplatypus-webform-field-input"
};
boxPaymentExplanation.Width = 660;
boxPaymentExplanation.Style.Add("display", "inline-block");
我尝试添加这一行,以期实现此功能:
boxPaymentExplanation.Style.Add("TextMode", "MultiLine");
...但它对文本框的行为没有明显的改变——我可以在其中输入文本“直到牛回到谷仓”,但它只是不断地将字符添加到文本框的末尾一行.它永远不会包裹,因此永远不会增长。
更新
这是有效的 jQuery(源自 Christopher Jennings 提供的链接):
$(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
不幸的是,虽然上面的descent-into-the-mælström-esque jQuery 可以动态地增加文本框,但如果用户删除 文本,它就不起作用了;当这种情况发生时,我也希望它缩小......
【问题讨论】:
-
您所要做的就是将 textmode 属性设置为多行。详情请见msdn.microsoft.com/en-us/library/ybwb8sse(v=vs.140).aspx。
-
这并没有说明如何在 C# 中做到这一点,这是我需要知道的。
-
我添加了一个答案,希望能完全阐明这一点。
标签: c# jquery html multiline word-wrap