繁体   English   中英

ASP.NET Javascript Textbox onblur

[英]ASP.NET Javascript Textbox onblur

我在页面上注册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

这是FrontEnd .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调试器给我一个错误,因为源中没有定义javascript。

然而,我可以通过将Page_Load子标记放在aspx文件中的标记然后直接访问文本框的属性来使其工作。 但这不是我想要的。

基本上对于我的最后一页,我想要遍历页面上的所有文本框,然后给它们所有使用它们的id的onBlur和onFocus方法。

这可能吗? 我不明白我哪里错了。

请帮忙 :(

您可能从该行获取javascript错误:

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

True表示scriptText应该包含脚本标记,但您已经包含了脚本标记。 将此布尔值更改为False或删除脚本标记( 请参阅doc ):

选项a:

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" />

尝试这个:

RegisterClientScriptBlock的最后一个参数应为false

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

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

编辑:在页眉中,您还需要将CodeBehind="Test.aspx.vb"Inherits="yourproject.Test"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM