【问题标题】:ASP.NET Javascript Textbox onblurASP.NET Javascript 文本框 onblur
【发布时间】:2012-04-04 00:18:51
【问题描述】:

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

这是前端 .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 方法。

这可能吗?我看不出哪里出错了。

请帮忙:(

【问题讨论】:

  • 我有一种感觉,因为它实际上并没有包含在 aspx 页面中,但它必须始终包含吗?
  • 是的,您仍然需要在页眉(aspx)中添加代码隐藏和继承。
  • 我知道这听起来很基础 - 但如果您查看源代码,您会在代码中看到您的脚本吗?

标签: javascript asp.net vb.net


【解决方案1】:

你可能有一个来自该行的 javascript 错误:

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

True 表示scriptText 应该用脚本标签包裹,但您已经包含了脚本标签。将此布尔值更改为 False 或删除脚本标签 (see 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" />

【讨论】:

  • 我已经试过了,不管有没有脚本标签还是不行。
【解决方案2】:

试试这个:

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

【讨论】:

  • 还是不行,有无脚本标签我都试过了。
猜你喜欢
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2013-02-26
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
相关资源
最近更新 更多