簡體   English   中英

在ASP.NET Web用戶控件中進行客戶端自定義事件

[英]Make a Client-Side Custom Events in ASP.NET Web-User Control

我正在開發一個帶有Text-boxWeb-user control 現在,我需要從aspx page調用Text-box's Client事件。 誰能告訴我如何創建客戶端自定義事件。

編輯1

我需要在用戶控件中創建自定義客戶端事件。 這樣我就可以使用此事件從使用我的自定義控件的.aspx頁調用任何java-script函數。

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

在這里,我需要在onblur事件上調用java-script function

例如:

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

要使用戶控件發生“ 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM