2012-01-18 147 views
20

私は2ページあります。最初のページから、クライアント名の値を保持するクエリ文字列を持つモーダルを開きます。私はそれを開いてモーダルに隠しフィールドを設定するためにこれを使用します。jQueryを使ってasp:HiddenFieldの値を取得

最初の画面から送信された値を表示するには、新しいモーダルでTextBoxが必要です。

私が使用して値を取得しようとしました:

var hv = $('hidClientField').val();` 

しかし、これは動作するようには思えません。

これは私の隠されたフィールドです:

<asp:HiddenField ID="hidClientName" runat="server" />` 

私はこのようなPage_Loadの上の背後にあるコードでそれを設定します。

hidClientName.Value = Request.QueryString["Client_Name"] ?? "";` 

任意のアイデアは非常に理解されるであろう。

答えて

42

ASP.NetコントロールとJavaScriptの両方が同じページ上にある場合

var hv = $("#"+ '<%= hidClientField.ClientID %>').val(); 
  • を使用し、その後、次

    1. のいずれかをお試しくださいいくつかのコントロールからコントロールにアクセスしたい場合JSファイル、

      // 'id$' will cause jQuery to search control whose ID ends with 'hidClientField' 
      var hv = $('input[id$=hidClientField]').val(); 
      
    2. クラス名セレクタを使用して同じことができます。 this同様の質問をチェックしてください。

    コントロールIDは、mangledです。このため、コードは機能しません。

    これはうまくいきます。

  • +1

    IMOの場合、jsコードが.js外部ファイルにある場合、 '<%...%> 'は解析されないので、この方法は使用しないでください。 –

    +0

    +1あなたはそれを得ました。私の答えを更新していた:) –

    7

    あなたはIDによって選択するために、あなたのセレクタに#を忘れてしまった:

    var hv = $('#hidClientField').val(); 
    

    あなたはctl1$hidClientFieldのようなIDで終わるかもしれないので、asp.netは命名コンテナに基づいてIDを生成するが。その後、セレクタ "属性はで終わる" を使用することができます:jQueryのasp:HiddenFieldについて何も知らないので

    var hv = $('input[id$=hidClientField]').val(); 
    

    は、マニュアルに関するjQuery selectors

    3

    を確認してください。 <input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" ...があるHTML構造を調べます。したがって、入力はID= HiddenFieldServerDateTimeでありません。これを克服するには、いくつかの方法があります。

    • はCSSセレクタを使用します。

      次のセレクタと
      <asp:HiddenField ID="HiddenFieldServerDateTime" 
             runat="server" 
             CssClass="SomeStyle" /> 
      

      var serverDateTime = $(".SomeStyle").val();

      CssClassHiddenFieldクラスで使用可能なクラスではありません(コレクションにはAttributesコレクションがないため、手動で追加することはできません)。

    • 使用ClientIDプロパティ:

      var serverDateTime = $("#<%= HiddenFieldServerDateTime.ClientID %>").val(); 
      
    • ラップあなたが選択することができるもので隠しフィールド:

      <div class="date-time-wrap"> 
          <asp:HiddenField ID="..." runat="server" /> 
      </div> 
      

       

      var serverDateTime = $('.date-time-wrap input[type=hidden]').val(); 
      
    +0

    を行うことができます。 '<%...%>'は外部のjavascriptファイルでは動作しませんし、余分なマークアップを加えることは本当に苦痛です。 –

    4

    使用IDセレクタ。

    var hv = $('#hidClientName').val(); 
    

    それとも

    var hv = $('#<%=hidClientName.ClientID%>').val(); 
    
    0

    Asp.netコントロールを使用している場合、サーバーはコントロールIDをマングルします。これは、無関係なコントロールツリー階層情報をIDに追加します。コントロールのClientIDプロパティ(hfUser.ClientID)で使用可能なレンダリングされているacutal idを参照するか、コントロールの親を見つけてそのコントロールを検索するなど、よりラウンドアバウトな方法でコントロールにアクセスする必要がありますあなたのコントロールを見つけるために子供。

    asp.net HiddenFieldコントロールを使用する必要がない場合は、通常の古いhtml入力を使用してください。

    -1

    このコードを試してください。

    var hv = $("#<%= hidClientField.ClientID %>").val(); 
    
    0

    あなたはすべてのことがどのように複雑である、このように

    var hval = $('#<%= hdMarkupPercentage.ClientID%>').val(); 
    
    関連する問題