这是注入到页面中的.cs代码中的代码以及ASCX中与此代码一起使用的按钮标记。
加载页面时,如果我输入电子邮件并单击按钮,则会触发我的代码。如果我将电子邮件字段留空,则验证会根据需要对其进行标记(这是正确的)。如果我然后在字段中输入一个值并再次单击该按钮,我的代码后面就不会被击中。这是非常一致的,如果验证将值标记为无效,则按钮单击将永远不会被后面的代码命中。
非常感谢任何帮助。
<asp:Button ID="btnContinue" runat="server" onclick="btnContinue_Click" Text="Continue"/>
@"$(document).ready(function()
{
$('#" + this.btnContinue.ClientID + @"').click(function () {
alert('In button continue click');
});
$('#aspnetForm').validate({
rules:
{" +
this.txtEmail.UniqueID + @":
{
required: true
}
},
messages:
{" +
this.txtEmail.UniqueID + @":
{
required: 'Email is required.'
}
}
});
});";
我忽略了(这是一个漫长的深夜),这发生在一个贬低到SharePoint 2010的网站上。事实证明,我们的设计师修改了导致问题的母版页。如果我使用default.master它工作正常。我正在评论修改后的母版页的各个部分,以找出导致问题的原因。
答案 0 :(得分:0)
在验证表单后尝试验证按钮clientID的值,如果它在点击事件触发后发生变化,那就是它。使用$('#btn_continue')而不是
答案 1 :(得分:0)
$('#" + this.btnContinue.ClientID + @"').live('click', function () {
alert('In button continue click');
});
那将保持它的运作。验证后重新加载时,您将失去对元素的绑定。
如果ID存在问题,您可以为其添加一个类:
$('.theButtonClass').live('click', function () {
alert('In button continue click');
});
<asp:Button ID="btnContinue" class="theButtonClass" runat="server" onclick="btnContinue_Click" Text="Continue"/>