如何阻止 dojo 滚动到所需的输入

Posted

技术标签:

【中文标题】如何阻止 dojo 滚动到所需的输入【英文标题】:How to stop dojo from scrolling to required input 【发布时间】:2011-05-05 05:36:36 【问题描述】:

我有一个长长的网页,底部有一个表格。该表单有几个输入,其中一个是 required="true"。在解析器解析所有输入并对其进行处理后,它会向下滚动到该必填字段 - 这当然不是我希望访问者首先看到的内容,因为重要的内容位于页面顶部。这种滚动行为在某些情况下可能很聪明 - 但在我的情况下,它完全糟糕。

我如何告诉 dojo 停止滚动到所需的文本输入?

感谢所有的道场大师!

【问题讨论】:

【参考方案1】:

基本小部件dijit.form._FormWidget 具有scrollOnFocus 属性,该属性由后代小部件继承。 将其设置为false。它帮助我防止滚动到按钮。


这行不通,因为dijit.Form 包含关注第一个无效字段的逻辑。我能想到的最快解决方案是添加一个补丁,该补丁将覆盖dijit.form._FormMixinvalidate 方法。您需要在需要新行为的那些页面上安装补丁。

dojo.provide("your.namespace.FormPatch");
dojo.extend(dijit.form._FormMixin, 
    validate: function()  /* your implementation here */ 
);

您还可以定义一个继承自dijit.Form 的新小部件。

【讨论】:

这听起来不错——但我究竟是怎么做到的呢?我现在有这个:dojo.byId("signupForm").scrollOnFocus = false; dojo.byId("signupForm").setAttribute("scrollOnFocus", false); dijit.byId("signupForm").attr("scrollOnFocus", false); signupForm.attr("scrollOnFocus", "false"); signupForm.validate();那不这样做:( 您应该为表单中的每个输入小部件执行此操作。例如 dijit.byId("textInput1").scrollOnFocus = false; 对不起,但这似乎也不起作用:(我已经尝试了所有我能想到的将表单和输入上的“scrollOnFocus”设置为false......有没有办法停止表单中的第一个必填字段以专注于验证?或者以任何其他方式在不验证表单的情况下将必填字段显示为黄色/带有警告图标? 你是对的。请查看更新。您可以将原始验证方法复制到您的补丁并尝试进行修改。

以上是关于如何阻止 dojo 滚动到所需的输入的主要内容,如果未能解决你的问题,请参考以下文章

如何使 openssl_encrypt 将输入填充到所需的块大小?

ScrollTop 到所需的位置在 iPad 的情况下不起作用

在 Dojo Deferred 解决之前如何阻止?

如何使用 af_imageAspectScaled 缩放到所需的像素大小

Vue:如何将数据从父组件传递到所需的子组件?

如何在 Tableau 上动态选择名称并转到所需的仪表板