2012-02-22 4 views
0

今日私はインタビューの質問をタイトルにつけました。JavaScriptを使用してネストされたコントロールのClientIDを取得する方法は?

たとえば、更新パネルにはパネルが含まれ、パネルにはテキストボックスが含まれます。

どのようにしてTextBox ClientIDを取得できますか?

私はそのことを考えることができる唯一のは、次のとおりです。

  1. 私たちは、テキストボックスのClientIDがClientIDがモードに依存して予測し、getElementByIdを使用することができます。

    すなわちgetElementByID('ct100$MasterPageBody$ct100$UpdatePanelID$ct100$PanelID$ct100$TextBoxID')

  2. 我々は、アレイに入力コントロールを解析し、HTMLを解析するためにJavaScriptを使用することができます。

    すなわち、最初のUpdatePanelの最初のPanelの最初のTextBoxを探したいとします。 myUpdatePanel [0]からそれを見つけて、JavaScriptを使用して子供を得ることができますか? (私はここでしか推測しています)

  3. getElementByID('<%=MyTextBox.ClientID%>')

しかし、動的な追加されたテキストボックスを想定し、それを行うための適切な方法は何ですか?

+0

ような何かを行うことができます。また、試みることこれはネストされたコントロールより多く使用するためのものです: http://stackoverflow.com/questions/5275693/find-nested-checkboxlis t-in-repeater-with-jquery –

答えて

2

あなたはここでの例のように、IDの末尾に基づいてjQueryのセレクタからコントロールにアクセスすることができます:ここで

<asp:CheckBox ID="chkEnable" Text="My Checkbox" runat="server" /> 
<script type="text/javascript"> 
    $(function() { 
     var checked = $("input[id$=chkEnable]").attr("checked"); 

    }); 
</script> 

は正確なもののための記事です: http://weblogs.asp.net/joelvarty/archive/2009/02/09/jquery-get-a-handle-on-a-server-element-in-javascript-without-using-lt-elem-clientid-gt.aspx

+0

優れた答え!これを使用して、子コントロールのasp.netテキストボックスのIDを検索します。従来の「<%= textBox.ClientID%>」は、ClientID呼び出しがテキストボックスが存在しないコントロール(つまり子コントロール)上にあるため機能しません。これは完全にその問題を回避するために働いた。 – Kaos

0

はこのjQueryの

をお試しください

まずテキストボックスにフォーカス設定の
$("input[type='text']:first") 

例あなたは今、この

var $textboxes = $("input[type='text']")

を試すことができます

$(document).ready(function() { 
     // focus on the first text input field in the first field on the page 
     $("input[type='text']:first", document.forms[0]).focus(); 
    }); 
0

$textboxesは、ページ上のすべてのテキストボックスを表すのjQueryオブジェクトの配列ですので、あなたが

$.each($textboxes, function(index, obj) { 
    // do something to check if this is the textbox that you are looking for... 
}); 
関連する問題