2012-03-19 11 views
1

javascriptをページに登録する際に問題が発生しているため、テキストボックスでonBlurを起動できます。私は自分の問題を示すための簡単なテストページを作成しました。ASP.NET JavaScriptのテキストボックスonblur

ここでここでバックエンドVB.Net

Public Class Test 
Inherits System.Web.UI.Page 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
    Dim scriptText As String = "" 
    scriptText &= "<script language='javascript'>" 
    scriptText &= "function DisplayBlurMessage(){alert('you clicked outside the textbox');}" 
    scriptText &= "</script>" 

    ClientScript.RegisterClientScriptBlock(Me.GetType(), _ 
     "BlurScript", scriptText, False) 

End Sub 
End Class 

iがテキストボックスの外をクリックし、ページを表示すると、JavaScriptデバッガが私与えた.aspxファイル

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Test.aspx.vb" Inherits="WebApplication1.Test" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<title>Test Page</title> 

</head> 
<body> 
<h3>Test Page</h3> 
<form id="form1" runat="server"> 

<asp:TextBox id="TextBox1" columns="54" 
Text="Click here then outside" 
runat="server" onBlur="DisplayBlurMessage();"/> 

</form> 
</body> 
</html> 

フロントエンドですされますエラーはjavascriptがソースに定義されていないためです。

ただし、Page_Loadサブをaspxファイルのタグに入れてから、テキストボックスの属性に直接アクセスすることで動作させることができます。しかし、これは私が望むものではありません。

基本的に私の最後のページでは、ページ上のすべてのテキストボックスを繰り返して、それらのIDを使用するすべてのonBlurとonFocusメソッドを与えたいと思っています。

これは可能ですか?私はどこが間違っているのか分かりません。

おそらくラインからJavaScriptのエラーソーシング持っ:(

+0

実際にはaspxページには含まれていないので、私はその気持ちがありますが、それはいつもそうでなければなりませんか? –

+0

はい、CodebehindとInheritsをページヘッダ(aspx)に追加する必要があります。 –

+0

これは基本的なものだと思いますが、ソースを見るとコード内にスクリプトが表示されますか? – Tim

答えて

2

助けてください:

ClientScript.RegisterClientScriptBlock(Me.GetType(), _ 
     "BlurScript", scriptText, True) 

TruescriptTextは、スクリプトタグでラップする必要がありますが、あなたはすでにスクリプトタグが含まれていることを意味し。(see doc)をFalseにこのブール値を変更したり、スクリプトタグを削除してください:

オプション:

Dim scriptText As String = "" 
scriptText &= "function DisplayBlurMessage(){alert('you clicked outside the textbox');}" 

ClientScript.RegisterClientScriptBlock(Me.GetType(), _ 
    "BlurScript", scriptText, True) 

オプションB:

Dim scriptText As String = "" 
scriptText &= "<script language='javascript'>" 
scriptText &= "function DisplayBlurMessage(){alert('you clicked outside the textbox');}" 
scriptText &= "</script>" 

ClientScript.RegisterClientScriptBlock(Me.GetType(), _ 
    "BlurScript", scriptText, False) 

編集:あなたがあなたのページでのScriptManagerを持っている必要がありますスクリプトを登録するために

。フォームに以下を追加します。

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
+0

私はすでにそれを試しました、スクリプトタグで、それともまだ動かないのですか? –

+0

あなたのページにスクリプトマネージャーを追加するのを忘れましたか? – Candide

+0

ありがとう:)それは動作します! –

1

はこれを試してみてください。

RegisterClientScriptBlockの最後のパラメータは、でなければなりません。

ClientScript.RegisterClientScriptBlock(Me.GetType(), _ 
     "BlurScript", scriptText, False) 

http://msdn.microsoft.com/en-us/library/bahh2fef.aspx

EDIT:ページヘッダーに 、あなたもCodeBehind="Test.aspx.vb"Inherits="yourproject.Test"を配置する必要があります。

<%@ Page Language="VB" AutoEventWireup="True" CodeBehind="Test.aspx.vb" Inherits="yourproject.Test" %> 
+0

はまだ動作しません。私はスクリプトタグの有無にかかわらず試しました。 –

+0

thankyou :)それは動作します! –

関連する問題