我有一些文本输入,当用户选中下一个时,我正在验证。我希望在显示警报后,重点是留在有问题的输入上。我似乎无法确定让JQuery执行此操作的正确语法。而是以下代码显示警报然后关注下一个文本输入。如何在显示警报后阻止标签到下一个元素?
$('input.IosOverrideTextBox').bind({
blur: function(e) {
var val = $(this).val();
if (val.length == 0) return;
var pval = parseTicks(val);
if (isNaN(pval) || pval == 0.0) {
alert("Invalid override: " + val);
return false;
}
},
focus: function() {
$(this).select();
}
});
答案 0 :(得分:0)
我不喜欢强制对焦,但是你不能只是在模糊发生后进行对焦吗?
element.focus();
如果在模糊事件中这样做并不总是有效(我不确定它何时触发,在实际模糊发生之前或之后),冗余超时也会发生:setTimeout(function () { element.focus() }, 0)
但请不要这样做。哎呀,您永远不应该使用alert
或任何类型的模式对话框来进行Web界面。如何在表单字段中添加invalid
类,将消息放在其旁边,并禁用提交直到所有字段都有效?这是一种侵入性较小的解决方案,允许我以最适合我的方式填写表单,而不是以最简单的方式填写表单。
答案 1 :(得分:0)
默认情况下,您可以使用validation插件执行此操作。
focusInvalid默认值:true
通过validator.focusInvalid()将最后一个活动元素或第一个无效元素集中在提交上。最后一个活动元素是在提交表单时具有焦点的元素,避免窃取其焦点。如果没有聚焦元素,则表单中的第一个元素会获得它,除非关闭此选项。
然后你只需要让焦点事件处理程序执行你的选择并让插件处理验证。