簡體   English   中英

使用JavaScript檢索文本框

[英]Retrieve a TextBox using JavaScript

我在文本框內的編輯模式下有一個GirdView。

我需要在JavaScript中使用ID(從瀏覽器的源代碼)檢索此TextBox。

ctl00$MainContent$uxListOptions$ctl02$uxValueInput

但是我收到一個錯誤,因為我的JavaScript無法找到TextBox。

這是代碼:

   <span onclick="encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox')">
        <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="[Publish]" />
    </span>

在控件的OnPageLoad中,我將此稱為:

private void addEditorJavaScript()
{
    // create our HTML encoder javascript function
    // this way it shows up once per page that the control is on
    string scr = @"<script type='text/javascript'>function encodeMyHtml(name){
                var content = document.getElementById(name).value
                content = content.replace(/</g,'<');
                content = content.replace(/>/g,'>');
                document.getElementById(name).value = content;
            }</script>";

    // add the javascript into the Page
    ClientScriptManager cm = Page.ClientScript;
    cm.RegisterClientScriptBlock(this.GetType(), "GlobalJavascript", scr);
}

我正在嘗試使用此代碼http://dustyreagan.com/how-to-submit-html-without-disabling/

知道我在做什么錯嗎? 多謝你們!

如果使用的是ASP.Net 4.0,則可以對此控件使用ClientIdMode = Static或Predictable。

您可以這樣定義網格:

 <div>
   <asp:GridView ID="GridView1" runat="server"  Width = "550px"
    AutoGenerateColumns = "false" Font-Names = "Calibri" 
    Font-Size = "12pt" HeaderStyle-BackColor = "LightYellow" AllowPaging ="true"  ShowFooter = "true"  OnPageIndexChanging = "OnPaging" PageSize = "10" >
   <Columns>
      <asp:TemplateField ItemStyle-Width = "100px"  HeaderText = "Name">
        <ItemTemplate>
         <asp:TextBox ID="txtPeriod" runat="server" CssClass="css1 mycss" Text='<%# Eval("Period")%>' 
             onblur="SetPostingPeriod(this)"></asp:TextBox>
        </ItemTemplate>                       
    </asp:TemplateField>   
   </Columns> 
   <AlternatingRowStyle BackColor="#C2D69B"  />
</asp:GridView> 
</div>

您的Javascript函數將為:

<script language="javascript" type="text/javascript">
     /* Populating same data to all the textboxes inside grid, 
     once change of text for one textbox - by using jquery
     */
     function SetPostingPeriod(obj) {

         var cntNbr = $("#" + obj.id).val();
      // var cntNbr = document.getElementById(obj.id).value;
      // alert(cntNbr);

         //Access Grid element by using name selector
         $("#<%=GridView1.ClientID %> input[name*='txtPeriod']").each(function (index) {

             if ($.trim($(this).val()) != "")
                 if (!isNaN($(this).val())) {
                     $(this).val(cntNbr);
                 }
         });
     }
 </script>

此Javascript函數稱為文本框的onblur事件。 同時調用此函數時,它傳遞的參數不過是文本框ID。

在javascript函數內部,通過使用參數(即文本框的ID),我們得到了重視。

這是代碼:

      var cntNbr = $("#" + obj.id).val();

然后,對於網格中可用的每個“ txtPeriod”控件,我們需要為它們分配當前“ txtPeriod”文本框值的值。

循環網格以標識每個可用的“ txtPeriod”:這是代碼:

 $("#<%=GridView1.ClientID %> input[name*='txtPeriod']").each(function (index) {

 });

在此循環中,我們需要將“ txtPeriod”(當前/已修改)值分配給其他“ txtPeriod”文本框。在分配其良好做法之前,請檢查它是否為null或NAN。

這是代碼:

               if ($.trim($(this).val()) != "")
                 if (!isNaN($(this).val())) {
                     $(this).val(cntNbr);
                 }
encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox')

這將導致

encodeMyHtml('ctl00_MainContent_uxListOptions_ctl02_uxValueInput_FormViewContentManager_ContentTextBox')

您的DOM中是否存在對該ID的控件?

您似乎對如何創建ID做出了許多假設。 最好立即引用ContentTextBox.ClientID

如果ContentTextBox是對文本框的有效引用,則類似於以下內容:

encodeMyHtml('<%# ContentTextBox.ClientID %>')

暫無
暫無

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

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