我遇到了一个问题,我必须以编程方式填充TextArea。我使用了以下代码。
System.Windows.Forms.HtmlElement reviewText = myDoc.GetElementById("review-text");
reviewText.InnerText = Program.mainForm.richTextBox1.Text.Trim();
这很好用,它在TextArea控件中设置文本。我面临的问题是这个文字看起来很轻松。当用户点击此文本时,它会消失。它只在第一次点击时发生。
所以我尝试了以下代码,首先单击此框,然后设置文本。
reviewText.InvokeMember("click");
然后尝试在TextArea中设置文本,但行为相同。
我挖掘了页面的源代码,发现了一些与此TextArea相关的脚本。
TextArea的来源
<textarea onkeyup="javascript:yelp.ui.widget.countChars(this.form.comment,5000);" onkeydown="javascript:yelp.ui.widget.countChars(this.form.comment,5000);" name="comment" id="review-text" class="form400" rows="8" cols="40" style="height: 86px;"></textarea>
与TextArea关联的脚本
<script type="text/javascript">
var bizName = "Geary Club";
if ($('review-text'))
{
new yelp.ui.widget.DefaultValueTextField($('review-text'), 'Please write here');
}
有人会建议我如何将文本插入此TextArea控件吗?
答案 0 :(得分:0)
这是一个ASP.NET Web应用程序吗?如果是,则System.Windows.Forms.HtmlElement是一个问题。我的想法是,当你预填充TextArea时,你需要以某种方式禁用 new yelp.ui.widget.DefaultValueTextField JavaScript代码。您是否能够使用具有多行属性设置的ASP.NET TextBox控件?如果是这样,我会使用它并更改您的顶级代码,只需设置Textbox控件的.Text属性。
无论哪种方式,在Javascript(如果这是jQuery)中,我都会这样做:
if ($('review-text') && $('review-text').val() != "")
{
new yelp.ui.widget.DefaultValueTextField($('review-text'), 'Please write here');
}
这样,只有在没有文本的情况下才会设置默认值。
答案 1 :(得分:0)
我更改了文本区域的HTML。并从其html中删除了class="form400 default_valued_text_field"
属性。
myDoc = this.webBrowser1.Document;
myDoc.GetElementById("review-text").OuterHtml = "<textarea id=\"review-text\" onkeyup=\"javascript:ui.widget.countChars(this.form.comment,5000);\" onkeydown=\"javascript:ui.widget.countChars(this.form.comment,5000);\" name=\"comment\" rows=\"8\" cols=\"40\" style=\"height: 86px;\"></textarea>";
之后我设置了这个元素的内部文本
myDoc.GetElementById("review-text").InnerText = "Testing";