UserControl提升事件

时间:2011-02-18 15:39:07

标签: asp.net vb.net

我将一个onfocus事件添加到Web用户控件(.ascx),使其在获得焦点时引发事件,但事实并非如此。是不打算以这种方式工作,我怎样才能让它举起来?以下是示例,但不起作用。

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="WebUserControl1.ascx.vb" 
Inherits="RaiseEventUserControl.WebUserControl1" %> 
<div style="padding: 5px; background-color: #C0C0C0"> 
TB1: 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<br /> 
<br /> 
TB2: 
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</div>

<%@ Register Src="WebUserControl1.ascx" TagName="WebUserControl1" TagPrefix="uc1" %>  
<!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 runat="server">  
<title></title>    
<script type="text/javascript">  
    function RaiseEvent(obj) {  
        alert("Event was raised for: " + obj.id)  
    }  
</script>  
</head>  
<body>  
<form id="form1" runat="server">  
<div>  
    <uc1:WebUserControl1 ID="WebUserControl11" runat="server" onfocus="RaiseEvent(this)" />  
    <br />  
    <uc1:WebUserControl1 ID="WebUserControl12" runat="server" onfocus="RaiseEvent(this)" />  
</div>  
</form>  
</body>  
</html>

2 个答案:

答案 0 :(得分:0)

这将呈现给页面的方式是将“onFocus”属性添加到表示控件的div中。这不是支持焦点的东西。您可以添加“onFocus”项来表示控件中的第一个文本字段或类似的内容,以便在需要时能够引发事件。

答案 1 :(得分:0)

这可以使用jquery来实现。在head元素中,添加以下内容:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('input[name^="WebUserControl"]').focusin(function () {
        $(this).val("i have focus");
    });
});
</script>

这样做,抓取名称以“WebUserControl”开头的输入元素,并添加“got focus”事件。该事件的处理程序将“我有焦点”作为该输入元素的值。