如何使用mshtml在textarea中输入文本

问题描述

| 我遇到一个问题,我必须以编程方式填充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控件吗?     

解决方法

        这是ASP.NET Web应用程序吗?如果是这样,则System.Windows.Forms.HtmlElement是一个问题。我认为这是在您预先填充TextArea时,您需要以某种方式禁用新的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\');
}
这样,仅当没有文本时才设置默认值。     ,        我更改了文本区域的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\";