将焦点集中在模糊事件JQuery上验证失败的同一控件上

时间:2012-04-09 15:13:39

标签: jquery validation

我有一个使用jQuery创建动态控件的表单。我已经使用jQuery对控件进行了验证。我正在验证模糊事件的控件。这里的问题是我需要将焦点设置在模糊事件验证失败的同一控件上。

我做过这样的事情:

$(propVal1).blur(function () {
    if(!ValidateNumber(this, propName1)) {
        alert('Value should be numeric in ' + propName1);
        setTimeout(function() {$(this).focus();}, 1);
    }
});

其中propVal1表示动态创建的输入控件,propName1是属性的字符串名称。

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因是您的输入控件是窗口中唯一的控件,因此在失去焦点后,整个窗口失去焦点,您无法将输入聚焦在没有焦点的窗口中。

这是我为证实这一点所做的测试html:

<form>
    <input id="my_input" type="text" />
    <input id="my_input2" type="text" />
</form>

<script type="text/javascript">
    $("#my_input").blur( function () { alert('bad input'); setTimeout( function() { $(window).focus(); $("#my_input").focus() }, 1 ); return false }  );
</script>

如果您注释掉第二个输入,则代码将无效!

一种可能的解决方案是在输入后有一个不可见的输入,以便在第一个模糊时模糊焦点。