我希望我的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;
不幸的是,虽然上面的下降到mælström-esque jQuery适用于动态增长文本框,但如果用户删除文本,它就不起作用;我想在发生这种情况时缩小...
答案 0 :(得分:1)
你走在正确的轨道上。您需要将TextMode属性设置为Multiline。但是,您采用的方法是添加HTML标记属性,而不是设置.NET属性。只需将boxPaymentExplanation.Style.Add("TextMode", "MultiLine");
替换为boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;