javascript – 如何使用JQuery触发Asp:HiddenField OnValueChanged事件?

前端之家收集整理的这篇文章主要介绍了javascript – 如何使用JQuery触发Asp:HiddenField OnValueChanged事件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个asp:hiddenField控件:
<asp:HiddenField ID="AuxHiddenField" runat="server"/>

我想使用Jquery触发其(服务器端)值更改事件:

Protected Sub AuxHiddenField_Changed(ByVal sender As Object,ByVal e As System.EventArgs) Handles AuxHiddenField.ValueChanged
    'some logic here      
End Sub

我试过了:

$('#AuxHiddenField').val("Mohaha!!");

Jquery无法找到元素,没有任何反应.
我该如何解决这个问题?

解决方法

ASP.net使用算法生成ClientID.默认情况下,它基于命名容器,控件包含在连续的中.

生成的HTML中的ID可能不是AuxHiddenField,而是像ctl00_AuxHiddenField.

设置ClientIDMode

<asp:HiddenField ID="AuxHiddenField" runat="server" ClientIDMode="Static" />

或者在jquery中,使用attirute selectors

$('input[id$=AuxHiddenField]')  // id ends with AuxHiddenField

我个人不喜欢<%= Field.ClientID%>这样做的方法是因为如果你的javascript在一个单独的文件中,它将不会被asp.net处理.

进一步阅读:

> ClientID property
> All about ClientID mode in asp.net 4

使用javascript以编程方式更改值不会触发更改事件,您必须手动触发它:

$('input[id$=AuxHiddenField]').val("any val").change(); // or .trigger('change');

在行动here.

关于ValueChanged事件

不幸的是,HiddenField没有AutoPostBack属性(事后才有意义).
我认为你必须在更改值后以编程方式触发回发.
如果您正在使用ajax,请使用__doPostBack(),否则,请提交表单document.forms [0] .submit().

另一个解决方案是用不可见的TextBox替换HiddenField:

<asp:TextBox runat="server" ID="mytextBox" Value="" Style="display:none;" AutoPostBack="true" OnTextChanged="mytextBox_TextChanged"></asp:TextBox>

以编程方式更改值将引发事件服务器端.请注意,为了隐藏文本框,您不应该使用Visible =“false,因为它不会在最终的html中呈现,请使用Style =”display:none;“property(css).

猜你在找的jQuery相关文章