【问题标题】:Is there a way to prevent jquery unobtrusive validation from setting the focus on the invalid field有没有办法防止 jquery 不显眼的验证将焦点设置在无效字段上
【发布时间】:2012-02-24 20:04:21
【问题描述】:
我有一个带有几个文本框的表单的 jquery 移动页面。我正在使用 jquery.validate.unobtrusive.js 来验证表单。如果一个字段被标记为必填并且用户没有填写它,则验证会捕获它并将焦点放在文本框上。在 iPhone 和 Android 等移动设备上,该焦点将滚动屏幕并调出虚拟键盘,有时会隐藏验证消息或滚动过去。我很好奇是否有办法禁用这种“自动聚焦无效”行为。
它最终可能不会带来更好的用户体验,但我想尝试将其关闭。
【问题讨论】:
标签:
jquery
jquery-mobile
jquery-validate
【解决方案1】:
试试这个:
$(document).ready(function () {
$("form").bind("invalid-form.validate", onValidationHandler);
});
function onValidationHandler(form, validator) {
validator.settings && (validator.settings.focusInvalid = false);
};
【解决方案2】:
我发现在使用不显眼的验证时这是最好的。只需将其添加到您的脚本中,无论验证如何运行,它都会禁用自动对焦行为:
$.validator.defaults.focusInvalid = false;
【解决方案3】:
尝试将focusInvalid 选项设置为false:
$("#form").validate({
focusInvalid: false
});
通过 validator.focusInvalid() 将最后一个活动或第一个无效元素集中在提交上。最后一个活动元素是提交表单时具有焦点的元素,避免窃取其焦点。如果没有聚焦元素,则表单中的第一个获取它,除非此选项被关闭。
示例: http://jsfiddle.net/3JtBF/