0

私は GridView を持っており、列 1 と 2 (その中のテキスト) を取得し、そのテキストをページの別のテキスト ボックスに配置する必要があります。

これが私がこれまでに持っているものです:

 var checked = $('input:checkbox').click(function(e) {
            //place airport in textbox, txtAirport
            var loc = $("tr:has(:checkbox:checked) td:nth-child(1)");
            var ac = $("tr:has(:checkbox:checked) td:nth-child(2)");

            // txtAirport.Text = loc + ac;
            $("#<%= txtAirport.ClientID%>").val(loc + ac);
        });

問題は、都市、通り、空港を取得する予定のテキストボックスに {Object object} {Object object} を取得していることです。「loc」変数と「ac」変数を明確にして、必要なものを得るにはどうすればよいですか? 私は .text と .val() を無駄に試しました。

HTML (ASP.NET Gridview) は次のとおりです。

 <asp:DataGrid ID="dgSearch" runat="server" AllowPaging="False" AllowSorting="False"
                            CellPadding="3" CellSpacing="2" ShowFooter="False" GridLines="None" AutoGenerateColumns="false">
                            <AlternatingItemStyle Wrap="False" CssClass="HeaderRowAlternate"></AlternatingItemStyle>
                            <ItemStyle Wrap="False"></ItemStyle>
                            <HeaderStyle Font-Bold="True" Wrap="False" CssClass="HeaderRowStyle"></HeaderStyle>
                            <Columns>
                                <asp:TemplateColumn HeaderText="Select">
                                    <HeaderStyle CssClass="HEADERSTYLE"></HeaderStyle>
                                    <ItemTemplate>
                                        <asp:CheckBox ID="chkLookup" runat="server" CssClass="checkbox"></asp:CheckBox>
                                    </ItemTemplate>
                                </asp:TemplateColumn>
                                <asp:BoundColumn Visible="False" DataField="AirportID"></asp:BoundColumn>
                                <asp:BoundColumn Visible="False" DataField="City"></asp:BoundColumn>
                                <asp:BoundColumn DataField="Loc" HeaderText="Location">
                                    <HeaderStyle Wrap="False" CssClass="HEADERSTYLE"></HeaderStyle>
                                    <ItemStyle Wrap="False"></ItemStyle>
                                </asp:BoundColumn>
                                <asp:BoundColumn DataField="AirportCode" HeaderText="Airport Code">
                                    <HeaderStyle Wrap="False" CssClass="HEADERSTYLE"></HeaderStyle>
                                    <ItemStyle Wrap="False"></ItemStyle>
                                </asp:BoundColumn>
                                <asp:BoundColumn DataField="AirportName" HeaderText="Airport Name">
                                    <HeaderStyle Wrap="False" CssClass="HEADERSTYLE"></HeaderStyle>
                                    <ItemStyle Wrap="False"></ItemStyle>
                                </asp:BoundColumn>
                                <asp:BoundColumn DataField="MilesFromSource" HeaderText="Distance">
                                    <HeaderStyle Wrap="False" CssClass="HEADERSTYLE"></HeaderStyle>
                                    <ItemStyle Wrap="False"></ItemStyle>
                                </asp:BoundColumn>
                            </Columns>
                        </asp:DataGrid>
4

2 に答える 2

1

jQuery は配列または一致したオブジェクトを返すため、 (またはそれぞれ)の代わりにloc[0].innerHTMLorloc.html()またはを使用する必要があります。loc.text()locac

   var checked = $('input:checkbox').click(function(e) {
        //place airport in textbox, txtAirport
        var loc = $("tr:has(:checkbox:checked) td:nth-child(2)");
        var ac = $("tr:has(:checkbox:checked) td:nth-child(3)");

        // txtAirport.Text = loc + ac;
        $("#<%= txtAirport.ClientID%>").val(loc.html() + ac.html());
    });

おそらくセルの数も変更する必要があります (1,2 -> 2,3) http://jsfiddle.net/vXtKq/を参照 してくださいレンダリングされたHTML (ブラウザのページ ソースから) を使用すると、解決策を簡単に見つけることができます。

于 2013-05-16T21:06:21.740 に答える
1

jQuery セレクターは、選択した DOM 要素を含むラップされたセットを返すため、.text() または .html() を使用する必要があります。

編集:OK、私はあなたのコードを複製しました。必要なのは

$("tr:has(:checkbox:checked) td:nth-child(2)");
$("tr:has(:checkbox:checked) td:nth-child(3)");

そして、すること

$("#<%= txtAirport.ClientID%>").val(loc[0].innerHTML + ac[0].innerHTML);

これにより、最初の行の 1 番目と 2 番目の列 (チェックボックスの後) にテキストが表示されます (2 番目の行では loc[1] と ac[1] など)。あなたが抱えていた問題td:nth-child(0)は、チェックボックスの<td>要素のDOMオブジェクトを返すことでした

チェックされたチェックボックスのみをループするには:

for (var i = 0; i < loc.length; i++) {
    alert(loc[i].innerHTML + " " + ac[i].innerHTML);
}

jQueryセレクターがすでにそれを行っているため、チェックボックスがオンになっていることを確認する必要はありません

于 2013-05-16T20:45:48.473 に答える