我一直在使用jQuery验证提交点击。我的页面包含两个div。
问题出现时,我把两个div在一个更新面板,验证停止工作,错误显示
Uncaught TypeError: Object [Object Object]没有方法'validate'
当更新面板被注释时,所有工作正常,但有完整的回发(这是我不想要的)。
我已经使用了几乎所有的东西,我在互联网上找到(noConflicts, Sys.WebForms.PageRequestManager.getInstance()等)
还有人能帮我吗?
代码::
<script type="text/javascript" src="../../Javascript/Validators/jquery.validate.js"></script>
<script type="text/javascript">
jQuery(document).ready
(
function () {
jQuery("#btn_Save").live("click", function () {
jQuery("#form1").validate
(
{
rules: {
txtContactPerson: "required"
},
messages: {
txtContactPerson: " * Please enter Contact Person Name"
}
}
);
});
}
);
</script>
身体:更新面板中简单的两个列表div
实际上,您可以对服务器表单使用jQuery验证。但这在UpdatePanel中变得很棘手。试试下面的方法:
在标题:
<script type="text/javascript">
$(function () {
$("#form1").validate(
{
rules: {
'<%= txtContactPerson.ClientID %>': "required"
},
messages: {
'<%= txtContactPerson.ClientID %>': " * Please enter Contact Person Name"
}
});
})
</script>
ScriptManager控件后面:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);
function initializeRequestHandler(sender, args) {
if (args.get_postBackElement().id == '<%= btn_Save.ClientID %>' && $("#form1").valid() !== true) {
args.set_cancel(true);
}
}
</script>
标记:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox runat="server" ID="txtContactPerson" />
<asp:Button ID="btn_Save" runat="server" Text="Submit" />
</ContentTemplate>
</asp:UpdatePanel>
如果你想禁用异步回发不仅为btn_Save
,只需删除这段代码:args.get_postBackElement().id == '<%= btn_Save.ClientID %>' &&