0

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

我做了这样的事情:

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

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

4

1 回答 1

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>

如果您注释掉第二个输入,代码将不起作用!

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

于 2012-04-09T16:14:32.243 回答