将屏幕移动到焦点区域html5

Posted

技术标签:

【中文标题】将屏幕移动到焦点区域html5【英文标题】:Moving screen to focused area html5 【发布时间】:2014-06-04 10:10:58 【问题描述】:

我有一个 html5 表单和一个提交按钮(原来的,我知道)。 当用户错误填写表单并按下 html 标签时,焦点转到第一条错误消息。这是意料之中的良好行为,一切都很好。 但是,当用户在 chrome 和 safari 上按下 GO 时,焦点不会移动。

设置焦点后,我尝试通过打印出 document.activeElement 进行调试。 当我按下 go 和按下表单按钮时,它会打印相同的 html 元素,即使当我按下 GO 时焦点不在这个特定元素上。

简而言之:

HTML 按钮 - 使用 jquery 将焦点应用于所需的错误输入。奇迹般有效。

GO 按钮 - 使用相同的功能将焦点应用于所需的错误输入。 用户什么也得不到。

代码示例:

标记:

<form class="boxBody form" action="#" id="profileForm">  
    <input type="text" class="keyboardInput" id="customer-email" name="email" tabindex="1" size="28" maxlength="128">  
   //More inputs  
    <button id="profileSubmit" data-localize="'text': 'profileBox.submit'" tabindex="11" class="save-profile btn btn-red"></button>  
</form>  

.js:

$('#profileForm').submit(function(event)

    event.preventDefault();
    updateProfile(event);  
//updateProfile validates the form and creates error messages
    setFocusOnUpdate();
    console.log(document.activeElement);
 //prints the same dom element.
);  

还有

function setFocusOnUpdate()
var successMessage = $(".alert-success:visible", widgetElement);  

if( successMessage.length > 0 )

    //Success message gets focus
    widgetElement.find("input, select").last().focus();

else
               
    //First error message gets focus
    var firstVisibleAlert = $(".alert:visible", widgetElement)[0];
    $(firstVisibleAlert).parent().find("input, select").focus();
           

问题是,在这两种情况下,GO,所需的元素都会获得焦点,但是当我使用按钮时,屏幕只会移动到该元素.按下去时如何让屏幕移动?

可以请一些巫师帮助我吗?任何想法表示赞赏!

【问题讨论】:

【参考方案1】:

您是否尝试过在同一页面上使用锚点来获得您想要的效果?

是否可以通过表单设置锚点,以便当您希望将焦点设置为某个输入时,它可以通过将屏幕移动到锚点来实现?

【讨论】:

当我有一个带有 id 的输入元素时,为什么我需要一个锚点?焦点在正确的对象上,屏幕只是不动。 锚点应该让屏幕移动。我只是在权衡我的一个想法。 是的,我已经尝试将屏幕移动到显示错误的输入,$("window").scrollTop($(':focus').offset().top);这会将视口移动到该位置。但我想让焦点表现得非常糟糕。我不想手动移动屏幕。不过,这绝对不是一个坏主意,只是不是一个真正的解决方法或这些奇怪东西的原因。

以上是关于将屏幕移动到焦点区域html5的主要内容,如果未能解决你的问题,请参考以下文章

Android TranslateAnimation - 将图像从屏幕右侧移动到屏幕中

HTML5画布自适应屏幕之后,如何获取屏幕中画布图片的坐标区域!急

html 移动网络应用的基本HTML5布局。这允许用户“保存到主屏幕”而没有浏览器框架,并使用全宽度网页

20160622 html5移动页面自适应屏幕宽度

导航到另一个屏幕后,TextField 获得焦点

在屏幕的指定区域使用 touchmoved 移动精灵