簡體   English   中英

如何在客戶端的ASP.NET中獲取自定義文本框控件的javaScript'value'屬性

[英]How to get javaScript 'value' property for custom text box control in ASP.NET on client side

有沒有一種方法可以使用JavaScript從另一個頁面訪問自定義ASP.NET控件內的特定文本框控件?

換句話說:我具有自定義控件BankInformation:

    <%@ Register Src="~/Controls/Attachments/SingleAttachment.ascx" TagName="SingleAttachment" TagPrefix="ABS" %>

    <div id="divIBAN" runat="server" class="control-group">
        <asp:Label ID="lblIBAN" runat="server" CssClass="control-label" AssociatedControlID="txtIBAN" meta:resourcekey="lblIBAN"></asp:Label>
        <div class="controls">
            <asp:TextBox ID="txtIBAN" runat="server"></asp:TextBox>
        </div>
    </div>
    <div id="divRoutingABANumber" runat="server" class="control-group">
        <asp:Label runat="server" ID="lblRoutingABANumber" CssClass="control-label" AssociatedControlID="txtRoutingABANumber" meta:resourcekey="lblRoutingABANumber"></asp:Label>
        <div class="controls">
            <asp:TextBox ID="txtRoutingABANumber" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator runat="server" CssClass="validator" ValidationGroup="vgDirectDebitApplication" ID="rfvRoutingABANumber" ControlToValidate="txtRoutingABANumber"  SetFocusOnError="True" Display="Dynamic" Enabled="false" meta:resourcekey="rfvRoutingABANumber"></asp:RequiredFieldValidator>
        </div>
    </div>

I've made an instance of this custom control inside of another control:

    <%@ Register Src="~/Controls/BankInformation.ascx" TagName="BankInformation" TagPrefix="ABS" %>

    <script type="text/javascript">
        $(document).ready(function () {
              var isAccountNumberEmpty = document.getElementById('<%=txtAccountNumber.ClientID%>').value; //This is not valid of course
              function validateAndCloseDirectDebitDialog(validationGroup, dialogID){
                if  (isAccountNumberEmpty != "")
                    dialogID.modal('hide');
                else {

                }
            }
</script>
<div id="bankInfoDialog" runat="server" class="modal hide fade" tabindex="-1" role="dialog">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" style="display: none">×</button>
        <h1 id="bankInformationDialogHeader"><%=GetLocalResourceObject("BankInfoHeader") %></h1>
    </div>
    <div class="modal-body">
        <ABS:BankInformation runat="server" ID="bankInformation" />
    </div>
    <div class="modal-footer">
        <asp:Button runat="server" ID="btnUpdate" meta:resourcekey="btnUpdate" CausesValidation="False" />
        <button id="btnCancel" runat="server" data-dismiss="modal" aria-hidden="true"><%=GetLocalResourceObject("Cancel")%></button>
    </div>
</div>

我想做的是在BankInformation控件中訪問ID為'txtAccountNumber'的文本框,從控件的實例化位置獲取其值,以便可以對btnUpdate click事件進行客戶端驗證。 我知道除了最重要的部分外,該如何做所有事情:是否可以獲取txtAccountNumber的值在它的控制范圍之外?如果可能,如何在javaScript中執行此操作?

對的,這是可能的。 您可以使用ClientIDMode屬性(ASP.NET 4.0):

<asp:TextBox ID="txtAccountNumber" runat="server" ClientIDMode="Static"></asp:TextBox>

然后訪問文本框:

var accountNumber = document.getElementById('txtAccountNumber').value;

另一種方法是將txtAccountNumber.ClientID保存到全局javascript變量,或者更好地將其另存為全局應用程序對象的屬性。

暫無
暫無

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

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