我有两个控件,其代码运行时呈现如下:
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获取上述两个控件的值?
答案 0 :(得分:1)
在asp.net中,您的控件id
在运行时更改。
如果您的ID为mycontrol
,则会在客户端更改为blahblahblahmycontrol
(id
将在最后)。
所以,
如果你有一个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>
这会将TextBox
的ID保留为mytxtbox
所以,你可以这样做,
$('#mytxtbox').val();
是的,您也可以查看源代码并使用转换后的id
,
var txtboxValue = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl03_txtTravelDate').val();
但不推荐。
答案 1 :(得分:0)
简单 - 使用.val()
:
var firstValue = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl03_txtTravelDate').val();
var secondValue = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl04_txtTravelDate').val();
您应该认真考虑使用短路id
。仅从这些id
开始,我就绝对不知道该值代表什么。
您可以通过以下方式使其更具可读性:
var baseID = "#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_";
var firstValue = $(baseID + 'ctl03_txtTravelDate').val();
var secondValue = $(baseID + 'ctl04_txtTravelDate').val();