我有一些文本输入,当用户切换到下一个时,我正在验证这些输入。在显示警报后,我希望焦点保持在有问题的输入上。我似乎无法确定正确的语法让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();
    }
  });

最佳答案

我不喜欢强制聚焦,但是难道您不能在模糊发生后就聚焦吗?

element.focus();


如果在模糊事件中执行此操作并非总是可行(我不确定确切时间是在实际模糊发生之前或之后触发的),那么冗余超时也可以:setTimeout(function () { element.focus() }, 0)

但是请不要这样做。哎呀,您也不应该对Web界面使用alert或任何形式的模式对话框。如何在表单字段中添加invalid类,在其侧面放置一条消息,并在所有字段均有效之前禁用提交?这是一种侵入性较小的解决方案,它使我能够以最适合我的方式填写表格,而不是以最简单的方式填写表格。

10-07 14:37