[英]Why doesn't jquery get input value?
我使用过一个asp.net中继器来重复图像。
我想通过jquery单击图像后从数据库返回主键ID,但它显示未定义。 我将图像存储在输入文本字段中,但该图像已显示在其中,但未处于警报状态。
jQuery的:
function displayStory() {
var txtIDValue = $(this).find('input[id$=txtID]').val();
var id = txtIDValue;
alert(id);
}
中继器:
<asp:Repeater ID="rptrImages" runat="server">
<ItemTemplate>
<div class="col-md-4">
<div class="thumbnail">
<input type="text" id="txtID" value='<%#Eval("ID")%>' />
<asp:ImageButton ID="imgButtonStory" OnClientClick='displayStory();return false;' runat="server" ImageUrl='<%# "UploadedImages/"+ Eval("Image") %>'
CssClass="img-responsive img-rounded" />
</div>
</div>
</ItemTemplate>
</asp:Repeater>
this
不是指调用click事件处理程序的元素,而是指window
对象。 您可以使用.call()
设置上下文
<asp:ImageButton ID="imgButtonStory" OnClientClick='displayStory.call(this);return false;' runat="server" ImageUrl='<%# "UploadedImages/"+ Eval("Image") %>'
CssClass="img-responsive img-rounded" />
并且在脚本中,您需要使用.prev()
因为文本框不是ImageButton
子元素
var txtIDValue= $(this).prev('input[id$=txtID]').val();
//var txtIDValue= $(this).closest('div').find('input[id$=txtID]').val();
您可以简单地说:
function displayStory() {
var txtIDValue = $('input[id="txtID"]').val();
var id = txtIDValue;
alert(id);
}
$('input[id="txtID"]')
将找到元素<input type="text" id="txtID" value='whatYouAreTryingToFind' />
并为其创建一个jQuery选择器。
提示:在jQuery中,事件的$(this)
范围可能很有趣,因此请始终检查它在JavaScript中返回Scope和this的确切原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.