使用jquery更新转发器中的隐藏字段值

时间:2014-10-31 16:18:07

标签: jquery .net

我想更新位于文本框旁边的隐藏字段的值。这样做的原因是因为它在.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");
                });
            });

更新文本框时隐藏字段的值不会改变。

3 个答案:

答案 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");
    });
});

此外,请查看我对您的问题的评论,以及为什么我使用兄弟姐妹()。