我有一些文本输入,当用户跳到下一个输入时,我正在验证这些输入。我希望在显示警告后,焦点停留在有问题的输入上。我似乎无法确定正确的语法来让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();
}
});
2条答案
按热度按时间jdzmm42g1#
我不喜欢强迫对焦,但你不能在模糊发生后再对焦吗?
如果在blur事件中这样做并不总是有效(我不确定它在什么时候触发,在实际的blur发生之前还是之后),那么一个冗余的超时也可以:
setTimeout(function () { element.focus() }, 0)
.但是请不要这样做。见鬼,你也不应该使用
alert
或任何一种模式对话框作为web界面。在表单字段中添加一个invalid
类,在它旁边放一条消息,然后在所有字段都有效之前禁用提交,怎么样?这是一个侵入性小得多的解决方案,允许我以任何最适合我的方式填写表单。而不是任何对您来说最简单方法gfttwv5a2#
默认情况下,您可以使用validation插件完成此操作。
焦点默认值无效:真
提交时通过validator聚焦最后一个活动元素或第一个无效元素。focusInvalid()。最后一个活动元素是表单提交时具有焦点的元素,以避免窃取焦点。如果没有元素获得焦点,则表单中的第一个元素获得焦点,除非关闭此选项。
然后,您只需要让focus事件处理程序执行您的选择,并让插件处理验证。