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

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

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

感谢所有的道场大师!

【问题讨论】:

    标签: forms dojo scroll widget textinput


    【解决方案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......有没有办法停止表单中的第一个必填字段以专注于验证?或者以任何其他方式在不验证表单的情况下将必填字段显示为黄色/带有警告图标?
    • 你是对的。请查看更新。您可以将原始验证方法复制到您的补丁并尝试进行修改。
    猜你喜欢
    • 2010-11-13
    • 2012-10-15
    • 2011-05-12
    • 2020-01-25
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多