在ASP.NET Web用户控件中创建客户端自定义事件

时间:2013-08-29 08:34:20

标签: javascript asp.net web-user-controls

我正在使用Web-user control开发Text-box。 现在我需要从Text-box's拨打aspx page客户端事件。 任何人都可以告诉我如何创建客户端自定义事件。

编辑-1

我需要在用户控件中创建自定义客户端事件。 这样我就可以使用此事件来调用java-script页面中我使用自定义控件的任何.aspx函数。

编辑-2

我的控制

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" ClientIDMode="Predictable" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxControl" %>
<link rel="stylesheet" href="GridViewCSSThemes/YahooGridView.css" type="text/css" media="screen" />
<script type="text/javascript">
    function isNumber(evt, id) {
        var a = document.getElementById(id).value;
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (a.indexOf(".") >= 0
        && charCode == 190) {
            return false;
        }
        else
            if (charCode != 46 && charCode != 37 && charCode != 39 && charCode != 34 && charCode != 190 && charCode != 110 && charCode > 31 && (charCode < 48 || charCode > 57)) {
                if (charCode < 96 || charCode > 105) {
                    return false;
                }
            }
        return true;
    }

    function formateValue(id) {
        var a = document.getElementById(id).value;
        var f = a.split(".");
        if (f.length > 2) {
            document.getElementById(id).value = f[0] + "." + f[1];
        }
        a = document.getElementById(id).value;
        if (a.indexOf(".") >= 0) {
            document.getElementById(id).value = a.substr(0, a.indexOf(".") + 1) + a.substr(a.indexOf(".") + 1, 4);
        }
        else if (a.length > 7) {
            document.getElementById(id).value = a.substr(0, 7) + "." + a.substr(7, a.length);
        }
        document.getElementById(id).title = "Input value: " + document.getElementById(id).value;
        document.getElementById('<%= Hidden_Value.ClientID%>').value = document.getElementById(id).value;
    }
    function test(id) {
        alert(document.getElementById(id).value);
    }
</script>
<div style="position:relative;border:none;" id="BssWebMasked">
    <asp:HiddenField ID="Hidden_Value" Value="" runat="server" />
    <asp:TextBox CssClass="tb10" Width="90" ID="txtAmt" runat="server" style="text-align:right;" 
        MaxLength="12" onkeydown="return isNumber(event, this.id)" onkeyup="formateValue(this.id)" >
    </asp:TextBox>
    <ajaxToolkit:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server" TargetControlID="txtAmt" 
            ValidChars="0123456789." Enabled="True" />
    <asp:CompareValidator ID="CVAmt" runat="server" 
        ErrorMessage="Invalid value" Display="Dynamic"
        Operator="DataTypeCheck" Type="String" ControlToValidate="txtAmt" >
    </asp:CompareValidator>
</div>

.aspx代码

<%@ Register TagPrefix="uc1" TagName="UCMask" Src="~/WebUserControl2.ascx" %>
<uc1:UCMask runat="server" DValue="" ID="txtRate" />

我需要在java-script function事件上拨打onblur

例:

<uc1:UCMask runat="server" DValue="" ID="txtRate" onCustomBlur="myFunction(this.id);"/>

1 个答案:

答案 0 :(得分:0)

对于用户控件的“OnLoad”事件,您需要注册启动客户端脚本,您将获得TextBox.ClientID并编写JavaScript代码。像...这样的东西。

string javaScript = string.format("$(#'{0}').on('input', function() {alert('change occured');})", MyTextBox.ClientID);

Page.ClientScript.RegisterClientScriptBlock (this.GetType(),
    "MyClientChangeEventKey", 
     javaScript,      
      true);