如何使用jQuery和JavaScript防止文本域失去焦点?

Jon*_*nas 8 html javascript forms jquery focus

我有一个文本字段<input type="text"/>,我想在焦点丢失时验证.如果输入无效,我想阻止焦点移动到下一个元素,或者换句话说,将焦点保持在无效输入,直到它有效.

我怎么能用jQuery和JavaScript做到这一点?

我已尝试使用此代码,但它不起作用(jsFiddle):

<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.6.2.min.js"></script>
<script>
$(function() {
    $('.hello').bind('focusout', function(e) {
        if(!isValid($(this).val())) {
            e.preventDefault();
            $(this).foucus();
        }
    });
});

    function isValid(str) {
        if(str === "hello") {
            return true;
        } else {
            return false;
        }
    }
</script>
</head>
<body>
Only valid content: <b>hello</b><br>
<input type="text" class="hello"/>
<button>Dummy</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Fis*_*rdo 10

这只是一个错字.更改:

$(this).foucus();
Run Code Online (Sandbox Code Playgroud)

至:

$(this).focus();
Run Code Online (Sandbox Code Playgroud)

此外,您可能希望通过调用select文本框让用户更轻松地纠正错误.这样,他们可以再次开始输入以更改值:

$(this).focus().select();
Run Code Online (Sandbox Code Playgroud)

这是一个有效的例子.


注意:这个答案解决了手头的问题,即问题.在更广泛的范围内,我同意其他人说不应该将用户锁定在一个字段中.更好的方法是在提交时验证整个表单,让用户看到所有问题并立即修复它们,而不是在整个过程中窃听它们.