ASP.Net 摘要检查页面转到顶部

我有一个简单的表单,具有多个强制性字段验证器和摘要验证控制。 当我发送表格时,检查

客户

将导致表格将切换到页面的上半部分。 如果我删除检查,页面将不会移动。

这是一个简短的例子:


<asp:textbox id="test" runat="server"></asp:textbox>
<asp:requiredfieldvalidator controltovalidate="test" id="testrequired" runat="server">*</asp:requiredfieldvalidator>
<asp:validationsummary id="summary" runat="server"></asp:validationsummary>
<asp:button id="submit" runat="server" text="submit"></asp:button>


我试图安装
SetFocusOnError="true"

在领域的强制验证者中
MaintainScrollPositionOnPostback="true"

对于Chikhikanya. - 即使它不是反向传输 - 无用。 这个问题有一个众所周知的解决方案吗?

EDIT

:

我发现了这个问题 js, 生根化 WebResource.axd. 看来,一切都归结为功能中的一行
ValidationSummaryOnSubmit//

.


line 534: window.scrollTo/0,0/;


有关于如何删除或绕过它的想法?

EDIT2

:

此刻快速工作:

安装
EnableClientScript="false"

对于所有验证控制 /禁用客户检查/

安装
MaintainScrollPositionOnPostback="true"

在指令中 Page

仍希望客户决定......

EDIT3

:

绕过这个问题似乎更好,只是覆盖了这个功能
window.scrollTo//

, 所以她在打电话脚本检查时没有什么措施:


<script type="text/javascript">
window.scrollTo = function// { }
</script>


在页面的任何位置添加上面的位置离开客户端检查时钟,但禁用该方法
window.scrollTo//

在整个页面上
已邀请:

卫东

赞同来自:

两种可能的方式:

禁用客户端检查并转到帖子背面的正确位置:


* set EnableClientScript="false" for all validation controls /disabling client validation/
* set MaintainScrollPositionOnPostback="true" in Page directive


关闭功能 scrollTo 在 javascript:


<script type="text/javascript">
window.scrollTo = function// { }
</script>

八刀丁二

赞同来自:


http://connect.microsoft.com/V ... e-top
, 描述 Microsoft Connect. 合适的
http://connect.microsoft.com/V ... e-top
它有最好的贩运基础:


var ValidationSummaryOnSubmitOrig = ValidationSummaryOnSubmit;
var ValidationSummaryOnSubmit = function// {
var scrollToOrig = window.scrollTo;
window.scrollTo = function// { };
var retVal = ValidationSummaryOnSubmitOrig//;
window.scrollTo = scrollToOrig;
return retVal;
}

奔跑吧少年

赞同来自:

反而


<script type="text/javascript">
window.scrollTo = function// { return true; }
</script>


在没有解析的情况下覆盖函数的内容 ScrollTo 对于所有反馈,我将此功能放在我的活动中。 OnClientClick 纽扣。 如下所示。


onClientClick="window.scrollTo = function/x,y/ { return true; };"


不确定这是最好的解决方案,但似乎它为我做了工作。

小姐请别说爱

赞同来自:

像他们说的那样

, 这是
https://connect.microsoft.com/ ... e-top
, 有涂层路径。

这里
https://coderoad.ru/699171/
, 它作为目前可用的最佳选择。


/function // {
var originalValidationSummaryOnSubmit = window.ValidationSummaryOnSubmit;
window.ValidationSummaryOnSubmit = function /validationGroup/ {
var originalScrollTo = window.scrollTo;
window.scrollTo = function// { };
originalValidationSummaryOnSubmit/validationGroup/;
window.scrollTo = originalScrollTo;
}
}///;


/他没有直接把他放在这里 SO, 现在
https://connect.microsoft.com/ ... e-top
, 似乎需要注册才能被注意到,这使得难以访问其解决方法。/

窦买办

赞同来自:

我用它: /必需的 jquery 和 jquery.scrollTo/

首先,将锚点放在审计摘要上方的特定类,例如:


<a class="custom_valsum_anchor"></a>
<asp:validationsummary enableclientscript="true" id="valSum" runat="server"></asp:validationsummary>


然后转动这个位 javascript:


$/document/.ready/
function // {
var $valSum = $/".custom_valsum_anchor"/;
if /$valSum.size// > 0/ {
var backup_ValidationSummaryOnSubmit = ValidationSummaryOnSubmit;
ValidationSummaryOnSubmit = function /validationGroup/ {
var backup_ScrollTo = window.scrollTo;
window.scrollTo = function // { };
backup_ValidationSummaryOnSubmit/validationGroup/;
window.scrollTo = backup_ScrollTo;
setTimeout/function // { $/"body"/.scrollTo/$valSum/; }, 1/;
};
}
}

/;


它主要是在需要时更换,一个功能
ValidationSummaryOnSubmit

暂时禁用的版本
window.scrollTo

并滚动到锚点。 改变它应该不难以使他不使用 jquery.

卫东

赞同来自:

使用时遇到了一个问题
MaintainScrollPositionOnPostback=true

将工作
, 但打破了滚动客户端滚动的位置。 因此,我添加了一个脚本来在反向时显示综合控制检查。


private void FocusControlOnPageLoad/Control ctrl/
{

this.Page.ClientScript.RegisterClientScriptBlock/
typeof/System.Web.UI.Page/, "ctrlFocus",
@"<script>
function ScrollView//
{
var el = document.getElementById/'" + ctrl.ClientID + @"'/
if /el != null/
{
el.scrollIntoView//;
el.focus//;
}
}
window.onload = ScrollView;
</script>"/;
}


从:


protected void Page_PreRender/object sender, EventArgs e/
{
if /Page.IsValid == false/
{
FocusControlOnPageLoad/TheValidationSummary/;
}
}


似乎我还必须禁用该功能 scrollTo:


window.scrollTo = function// {
return true;
}


收到一个代码 /基本上/
http://www.codeproject.com/KB/ ... .aspx
.

江南孤鹜

赞同来自:

页面将跳转到检查摘要所在的位置。 如果您希望它留在底部,请在“发送”按钮旁边的“检查”旁边移动。

EDIT, 您也可以尝试禁用检查摘要。

风见雨下

赞同来自:

也许你可以从所需的过程中继承 fieldvalidator 并覆盖客户端控制的客户端检查?

君笑尘

赞同来自:

查看目标方案的设置 html.

尝试
http://msdn.microsoft.com/en-u ... .aspx
到 VS 2005 年份您可以在页面后面的页面级别设置一个方案。

只是觉得。

要回复问题请先登录注册