Как ввести текст в textarea с помощью mshtml - PullRequest
2 голосов
/ 10 июня 2011

Я столкнулся с проблемой, я должен заполнить 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?

Ответы [ 2 ]

0 голосов
/ 19 июня 2011

Я изменил HTML текстовой области. И удалил атрибут class="form400 default_valued_text_field" из его HTML.

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";
0 голосов
/ 10 июня 2011

Это веб-приложение ASP.NET? Если это так, проблема System.Windows.Forms.HtmlElement. Я думаю, что в данный момент вам нужно как-то отключить новый yelp.ui.widget.DefaultValueTextField код JavaScript при предварительном заполнении TextArea. Можете ли вы использовать элемент управления ASP.NET TextBox с набором многострочных свойств? Если это так, я бы использовал это и изменил ваш верхний код, чтобы просто установить свойство .Text элемента управления Textbox.

В любом случае, в Javascript (если это jQuery) я бы сделал это:

if ($('review-text') && $('review-text').val() != "")
{
  new yelp.ui.widget.DefaultValueTextField($('review-text'), 'Please write here');
}

Таким образом, значение по умолчанию устанавливается только при отсутствии текста.

...