【问题标题】:How can I make a Sharepoint textbox (input, type=text) dynamically Multiline?如何动态制作 Sharepoint 文本框(输入,类型 = 文本)多行?
【发布时间】: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 可以动态地增加文本框,但如果用户删除 文本,它就不起作用了;当这种情况发生时,我也希望它缩小......

【问题讨论】:

标签: c# jquery html multiline word-wrap


【解决方案1】:

你在正确的轨道上。您需要将 TextMode 属性设置为 Multiline。但是,您采用的方法是添加 HTML 标记属性,而不是设置 .NET 属性。只需将boxPaymentExplanation.Style.Add("TextMode", "MultiLine"); 替换为boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;

【讨论】:

  • 这适用于换行,但它不会导致元素根据需要垂直增长以显示用户输入的所有内容。有没有办法检查是否有任何文本被“隐藏”(因为它们的文本比元素的当前高度显示的要多),然后相应地增加高度?
  • 自动高度调整不是标准文本框控件的功能。您仍然需要定义一个高度(可能在 CSS 中)并且它应该将文本换行到下一行(假设您的 CSS 没有任何问题),但它不会自动扩展控件,除非您在 Javascript 中提出一些解决方案.
  • 是的,这就是我要找的——一个 jQuery 解决方案。
  • 这应该会有所帮助:stackoverflow.com/questions/2948230/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
相关资源
最近更新 更多