在使用JQuery显示警报后,防止关注下一个表单元素

时间:2010-03-24 02:14:32

标签: javascript jquery javascript-events

我有一些文本输入,当用户选中下一个时,我正在验证。我希望在显示警报后,重点是留在有问题的输入上。我似乎无法确定让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 个答案:

答案 0 :(得分:0)

我不喜欢强制对焦,但是你不能只是在模糊发生后进行对焦吗?

element.focus();

如果在模糊事件中这样做并不总是有效(我不确定它何时触发,在实际模糊发生之前或之后),冗余超时也会发生:setTimeout(function () { element.focus() }, 0)

但请不要这样做。哎呀,您永远不应该使用alert或任何类型的模式对话框来进行Web界面。如何在表单字段中添加invalid类,将消息放在其旁边,并禁用提交直到所有字段都有效?这是一种侵入性较小的解决方案,允许我以最适合我的方式填写表单,而不是以最简单的方式填写表单。

答案 1 :(得分:0)

默认情况下,您可以使用validation插件执行此操作。

  

focusInvalid默认值:true

     

通过validator.focusInvalid()将最后一个活动元素或第一个无效元素集中在提交上。最后一个活动元素是在提交表单时具有焦点的元素,避免窃取其焦点。如果没有聚焦元素,则表单中的第一个元素会获得它,除非关闭此选项。

然后你只需要让焦点事件处理程序执行你的选择并让插件处理验证。