我有一个简单的aspx页面,它在UpdatePanel中有两个文本框。 我还有一个jQuery函数来感知这些文本框中的功能键F2。 如果没有UpdatePanel,这个jQuery函数可以很好地工作。 但是,使用UpdatePanel时,根本不会执行此功能。
jQuery函数编码如下:
<script src="Scripts/jquery-2.1.4.min.js"></script>
<script>
// function which will work for all textbox
$(function Fun2() {
// Execute if input type is textbox and
// if user performs keydown on this textbox
$("input[type=text]").keydown(function () {
// Check if F2 (ASCII 113) is pressed
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '113') {
// Extract TextBox ID and Text Value
var currentId = $(this).attr('id');
var currentVal = $('#' + currentId + '').val();
$('#HiddenBoxID').val(currentId);
// alert user with TextBox ID and Text Value
//alert('Textbox ID is : ' + currentId + ' and Textbox value is : ' + currentVal);
// Trigger buttons click event
$("#Button1").trigger('click');
}
});
});
</script>
我的UpdatePanel看起来像这样:
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:HiddenField ID="HiddenBoxID" runat="server"/>
<asp:TextBox ID="TextBox1" runat="server" style="top: 103px; left: 701px; position: absolute; height: 22px; width: 128px"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" style="top: 135px; left: 701px; position: absolute; height: 22px; width: 128px; bottom: 363px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" style="top: 173px; left: 701px; position: absolute; height: 26px; width: 135px" />
<asp:Button ID="Button2" runat="server" Text="Clear Message" style="top: 207px; left: 701px; position: absolute; height: 26px; width: 135px" />
<asp:Label ID="MessLine" runat="server" style="top: 253px; left: 701px; position: absolute; height: 19px; width: 182px"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
如何在仍然保留UpdatePanel的情况下让函数执行?
答案 0 :(得分:0)
我建议你做两个改变:
control.clientId
。$(function() {
并将这些行更改为:
$('#<%=HiddenBoxID.ClientID %>').val(currentId);
$("#<%=Button1.ClientID %>").trigger('click');
答案 1 :(得分:0)
更改您的标记如下
// Adding ClientIDMode attribute so that your Jquery selectors are found.
<asp:HiddenField ID="HiddenBoxID" runat="server" ClientIDMode="Static"/>
<asp:Button ID="Button1" runat="server" Text="Button" ClientIDMode="Static" style="top: 173px; left: 701px; position: absolute; height: 26px; width: 135px" />
并在使用UpdatePanel
function Page_Load()
{
// Your jquery code goes here
}