【发布时间】: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 和 ,所需的元素都会获得焦点,但是当我使用按钮时,屏幕只会移动到该元素.按下去时如何让屏幕移动?
可以请一些巫师帮助我吗?任何想法表示赞赏!
【问题讨论】:
标签: javascript jquery ios html mobile-safari