0

I've got a multiline asp.textbox input control.

I don't know if my issue is with ASP.NET, the Multiline control, or something else, but the onblur and onfocus are not working.

<script type="text/javascript">
  var defaultMsg = 'Write your message here or or call my voice at (xxx) xxx-xxxx.';
  var controlMsg = doc.createElement("input");
  controlMsg.id = "txtMessage";
  controlMsg.type = "text";
  controlMsg.value = defaultMsg;
  controlMsg.onfocus=function jpFocus() { if (this.value == defaultMsg) this.value = ''; }
  controlMsg.onblur=function jpBlur() { if (this.value == '') this.value = defaultMsg; }
</script>

And later....

<asp:TextBox ID="txtMessage" Columns="30" Rows="6" runat="Server" TextMode="MultiLine" />

Does anyone see a reason why this should not be working?

4

4 に答える 4

1

次のような無名関数を使用してみてください。

controlMsg.onfocus=function() { if ( ...

関数と関数のスコープ - MDN .

また、あなたは のようなものを呼び出しましたdocument.body.appendChild(controlMsg);よね?

編集:

を使用してdoc.createElementいます。docが確実に を指していることを確認してくださいdocument

また、Firefox でページを見て、エラー コンソールにエラーや警告がないかどうかを確認します。

于 2012-07-31T04:00:46.550 に答える
1

実際には、html 要素を作成していて、それにイベントを添付しています。さらに、ASP.NET コントロールはサーバー側 ID を使用しません。すべきことは次のとおりです。

var controlMsg = document.getElementById('<%= txtMessage.ClientID %>');
controlMsg.onfocus = // Some Code ...
controlMsg.onblur = // Some Code ...
于 2012-07-31T01:19:04.987 に答える
0

使用しているバージョンがわからない.これを試してください:

protected void Page_Load(object sender, EventArgs e)  
 {
   txtMessage. Attributes["onfocus"]="JavascriptMethod";  
 }
于 2012-07-31T04:29:20.580 に答える
0

なぜこれが機能し、他の手法が機能しなかったのかはわかりませんが、これで HTML が機能しました。

    <textarea name="txtMsg" rows="6" cols="30"
      onfocus="if(this.value==this.defaultValue)this.value='';" 
      onblur="if(this.value==='')this.value=this.defaultValue;">[Write your message here or call my voice number at (555) 222-1234.]</textarea>

テキストは非常に長くなる可能性があり、コントロールは気にしないようです。また、テキストは一箇所にしか書かれていません。

于 2012-08-17T11:07:08.670 に答える