如何阻止 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._FormMixin
的validate
方法。您需要在需要新行为的那些页面上安装补丁。
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 的情况下不起作用