0

我有两个控件,其代码在运行时呈现如下:

ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl03_txtTravelDate      
ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl04_txtTravelDate

如何使用 jQuery 获取上述两个控件的值?

4

2 回答 2

1

在 asp.net 中,您的控件id在运行时更改。

如果您的 id 是mycontrol,它将在客户端更改为blahblahblahmycontrolid将在最后出现)。

所以,

如果你有一个 asp.net 控件(文本框),如下所示,

<asp:TextBox runat='server' id='mytxtbox'></asp:TextBox>

你可以做,

$("input[id$='mytxtbox']").val();

它选择所有input_mytxtbox

或者,如果 javascript 在同一个 .aspx 文件上,您可以执行类似的操作

$('#<%=mytxtbox.ClientID %>').val()

如果您使用的是 asp.net 4.0,

您可以将ClientMode属性添加到Static

<asp:TextBox ID="mytxtbox" runat="server" ClientIDMode="Static"></asp:TextBox>

这将保留TextBoxtomytxtbox

所以,你可以这样做,

$('#mytxtbox').val();


是的,您也可以,查看源代码并id像这样使用转换后的代码,

var txtboxValue = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7‌​e7_ctl00_gdvItinerary_ctl03_txtTravelDate').val();

但它不推荐。

于 2012-07-01T11:40:54.397 回答
0

简单 - 使用.val()

var firstValue  = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7‌​e7_ctl00_gdvItinerary_ctl03_txtTravelDate').val();
var secondValue = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl04_txtTravelDate').val();

您应该认真考虑使用 shorted ids。仅从这些ids,我完全不知道该值代表什么。

您可以通过以下方式使其更具可读性:

var baseID = "#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7‌​e7_ctl00_gdvItinerary_";

var firstValue  = $(baseID + 'ctl03_txtTravelDate').val();
var secondValue = $(baseID + 'ctl04_txtTravelDate').val();
于 2012-07-01T10:19:03.117 回答