我想更新位于文本框旁边的隐藏字段的值。这样做的原因是因为它在.net转发器内,所以我无法在没有回发的情况下从代码更新它,这需要太长时间。
HTML
<asp:Repeater ID="rptTranslations" runat="server" OnItemDataBound="rptTranslations_ItemDataBound">
<ItemTemplate>
<tr id="rptRow" runat="server" class="form-line-input">
<td>
<asp:TextBox ID="txtEnglish" runat="server" ReadOnly="true" Text="" Width="475px"></asp:TextBox></td>
<td>
<asp:HiddenField ID="hiddenRecordId" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "recordId") %>' />
<asp:HiddenField ID="hiddenUpdated" runat="server" Value='false' />
<asp:TextBox ID="txtLanguage" runat="server" CssClass="jq-translation" Text="" Width="475px"></asp:TextBox></td>
</tr>
</ItemTemplate>
</asp:Repeater>
JQUERY 我使用了'name',因为当html返回到浏览器时,名称是'ctl00 $ ContentPlaceHolder1 $ rptTranslations $ ctl00 $ hiddenUpdated',并且ID在末尾有附加文本。
$(document).ready(function () {
$('.jq-translation').change(function () {
$(this).closest("[name$='hiddenUpdated']").val("true");
});
});
更新文本框时隐藏字段的值不会改变。
答案 0 :(得分:0)
检查html源代码中隐藏字段的名称,或使用firbug并确保它是您在jquery选择器中查找的名称。
所以我建议在这个隐藏字段中添加一个类,并在jquery选择器中使用它而不是名称,因为它将由asp.net自动生成
答案 1 :(得分:0)
我试过以下,它有效。使用.prev()
代替.closest()
。如果你仔细观察,你需要prev元素。
<script type="text/javascript">
$(document).ready(function () {
$('.jq-translation').change(function () {
$(this).prev().val("true");
});
});
</script>
答案 2 :(得分:0)
如果你确定'name'以'hiddenUpdated'结尾,那么如何使用
$(document).ready(function () {
$('.jq-translation').change(function () {
$(this).siblings().filter("[name$='hiddenUpdated']").val("true");
});
});
此外,请查看我对您的问题的评论,以及为什么我使用兄弟姐妹()。