在下面的代码中,我试图在单击复选框时更改隐藏字段的值(以便稍后从后面的代码访问)。但是,当我尝试使用下面的jquery获取值时,对于我尝试过的任何属性,我得到的都是'undefined'。我认为这意味着我没有设法找到我正在寻找的元素,所以没有要显示的属性。
关于我哪里出错的任何想法?我对jquery有一点经验,所以虽然不是一个完整的菜鸟,但我并不完全流利,所以我可能会发现一些非常明显的东西。
提前致谢。
HTML
<asp:GridView ID="PROMQs" runat="server" ShowFooter="true" DataSourceID="PROMQDat" AutoGenerateColumns="false" OnRowDataBound="PROMQs_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Very Unsatisfied" HeaderStyle-CssClass="RegText Ans PROMHead">
<ItemTemplate>
<div id="Thang" class="Thang">
<asp:CheckBox ID="VUnsat" runat="server" Checked="true" />
<asp:HiddenField ID="Hiddenfield" runat="server" Value="toot" />
<ajaxControlToolKit:MutuallyExclusiveCheckBoxExtender ID="mecb1" runat="server" TargetControlID="VUnsat" />
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
和jquery
$(document).ready(function () {
$(this).click(function (event) {
var el = event.target.id;
var div_id = $(el).closest('div[id]').attr('id');
var HF_id = $(el).closest('div[id]').find('.Thang').attr('value');
alert(div_id);
alert(test);
});
});
答案 0 :(得分:1)
我想你需要改变:
$(el)
到
$('#'+el)
和event.target
并不总是您认为的目标元素。这一行:
var HF_id = $(el).closest('div[id]').find('.Thang').attr('value');
绝对会返回undefined
,因为Thang
没有value
属性。
我在点击复选框时尝试更改隐藏字段的值
要回答这个问题,我建议您在复选框上使用change
事件:
$(document).ready(function() {
$('input[type="checkbox"]').change(function(event) {
var el = this; // is the checkbox
var div_id = $(el).closest('div[id]').attr('id'); // returns "Thang"
var HF_id = $(el).siblings('input[type="hidden"]').val(); // is the hidden input
alert(div_id);
alert(test);
});
});