Mic*_*elS 6 javascript vb.net asp.net jquery
我有这个asp:hiddenField控制权:
<asp:HiddenField ID="AuxHiddenField" runat="server"/>
Run Code Online (Sandbox Code Playgroud)
我想使用Jquery触发其(服务器端)值更改事件:
Protected Sub AuxHiddenField_Changed(ByVal sender As Object, ByVal e As System.EventArgs) Handles AuxHiddenField.ValueChanged
'some logic here
End Sub
Run Code Online (Sandbox Code Playgroud)
我试过了:
$('#AuxHiddenField').val("Mohaha!!");
Run Code Online (Sandbox Code Playgroud)
Jquery无法找到元素,没有任何反应.我该如何解决这个问题?
Did*_*hys 18
ASP.net使用算法生成ClientID.默认情况下,它基于命名容器,控件包含在连续的中.
生成的HTML中的ID可能不是AuxHiddenField这样的ctl00_AuxHiddenField.
设置ClientIDMode:
<asp:HiddenField ID="AuxHiddenField" runat="server" ClientIDMode="Static" />
Run Code Online (Sandbox Code Playgroud)
或者在jquery中,使用attirute选择器:
$('input[id$=AuxHiddenField]') // id ends with AuxHiddenField
Run Code Online (Sandbox Code Playgroud)
我个人不喜欢<%= Field.ClientID %>这样做的方式因为如果你的javascript在一个单独的文件中,它将不会被asp.net处理.
进一步阅读:
使用javascript以编程方式更改值不会触发change事件,您必须手动触发它:
$('input[id$=AuxHiddenField]').val("any val").change(); // or .trigger('change');
Run Code Online (Sandbox Code Playgroud)
在这里行动.
关于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>
Run Code Online (Sandbox Code Playgroud)
以编程方式更改值将引发事件服务器端.
请注意,为了隐藏文本框,您不应该使用,Visible="false因为它不会在最终的html中呈现,请使用Style="display:none;"属性(css).
| 归档时间: |
|
| 查看次数: |
13299 次 |
| 最近记录: |