2011-01-03 3 views
1

TextBox内に編集モードのGirdViewがあります。JavaScriptを使用してTextBoxを取得する

JavaScriptでこのテキストボックス(ブラウザのソースコードから)を取得する必要があります。

ctl00$MainContent$uxListOptions$ctl02$uxValueInput 

JavaScriptがTextBoxを検出できないため、エラーが発生します。

ここ

コードです:私のコントロールのOnPageLoadで

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

私はこれを呼び出す:

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/

私が間違って何をやっている任意のアイデアを、このコードを使用しようとしています?みんなありがとう!

+0

一意IDは何が含まれていない:ここで

コードはありますか? – Chandu

+0

まず、 'UniqueID.Replace(" $ "、" _ ")を' ClientID'に置き換えてください。あなたの問題を解決することはできませんが、見た目は良くなり、慣習が変わる場合には失敗しにくいでしょう。 –

+0

こんにちは、ブラウザのソースから、Iamがtextarea name = "ctl00 $ MainContent $ uxListOptions $ ctl02 $ uxValueInput" rows = "2" cols = "20" id = "MainContent_uxListOptions_uxValueInput_0" class = "mceEditor"として興味のあるTextBoxを見ることができます。 > & lt; p & gt; ciao & lt;/p & gt; – GibboK

答えて

0
encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox') 

これは

encodeMyHtml('ctl00_MainContent_uxListOptions_ctl02_uxValueInput_FormViewContentManager_ContentTextBox') 

になりますそのIDの管理は、あなたのDOMに存在していますか?

あなたはIDの作成方法について多くの仮定を行っているようです。すぐにContentTextBox.ClientIDを参照する方が良いでしょう。

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

こんにちは、どのように私はIDのIDがDOMに存在することを確認できますか? – GibboK

+0

ブラウザでソースコードを表示します。 –

1

あなたはASP.Net 4.0を使用している場合、あなたはClientIdMode =静的またはこのコントロールの予測可能なを使用することができます。次のような

何かが、ContentTextBoxは、テキストボックスへの有効な参照であることを条件とします。

0

あなたはこのようなあなたのグリッドを定義することができます。

<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以外のパラメータ が渡されます。

私はvaueを取得しているテキストボックスの のIDであるパラメータを使用してjavascriptの内部で機能します。ここで

コードされています。そして、グリッドの内部で利用可能な「txtPeriod」の各コントロールのために、私たちは彼らに現在の「txtPeriod」テキストボックスの値の 値を割り当てる必要が

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

。ここ のコードである:

ルーピンググリッドは、利用可能な各「txtPeriod」を識別するために、我々は他の 「txtPeriod」から「txtPeriod」(現在/改変)値を割り当てる必要があり、このループ内

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

}); 

チェックの良い練習を割り当てる前にそれはnullかNANかどうかです。