使用ASP.NET webforms,bootstrap,jquery。
我的表单提交:
<asp:LinkButton ID="lnkSubmit" CssClass="btn btn-warning CausesValidation="true" runat="server">Submit</asp:LinkButton>
我有以下JS用于客户端验证:
$("#ShortForm").click(function (evt) {
var isValid = $("#ShortForm").formValidation('validate');
if (!isValid)
evt.preventDefault();
});
我有客户端和服务器端验证检查。表格位于折叠下方。如果客户端检查失败,浏览器会将用户拉到页面顶部。如果客户端通过,但服务器端失败,则浏览器不会更改页面上的位置。这是为什么?
答案 0 :(得分:1)
浏览器在回发后维护位置可能是因为您的代码将MaintainScrollPositionOnPostBack 设置为true。
由于formValidation
函数中的代码,浏览器在客户端验证失败后滚动到页面顶部。我不熟悉这个函数(你使用哪个JQuery插件?)但我的猜测是你使用的验证套件在页面顶部有一个验证摘要面板和.formValidation
函数正在滚动页面,以便用户可以看到它。
答案 1 :(得分:1)
验证插件是formvalidation.io
这可以解决问题
if (!$("#ShortForm").data('formValidation').isValid())
evt.preventDefault();
});
有人可以解释为什么这会解决这个问题吗?我想了解其工作原理的内部运作方式,以及问题是如何发生的?