如何在jquery中为文本框提供焦点?

时间:2015-01-22 07:47:50

标签: javascript jquery

我想在用户输入错误的值时聚焦文本框。但我不知道如何在我的代码中添加focus()。任何建议

<input type="text" class="form-control" id="txtfirstname" alt="spnfirstname" name="txtfirstname">
<input type="text" class="form-control" id="txtmiddlename" name="txtmiddlename" alt="spnmiddlename">

$('document').ready(function () {
    $('#txtfirstname,#txtmiddlename,#txtlastname,#txtmothertongue,#txtplaceofbirth')
            .bind('keyup', function () {
                var theValue = $(this).val();
                var spanid = $(this).attr("alt");
                if (theValue != '' && theValue.match(/^[\a-zA-Z]+$/) == null)
                {
                    theValue = theValue.replace(/[^a-zA-Z, ]/g, '')
                    $("#" + spanid).text("alphabets only");
                    $('#txtfirstname').focus();
                }
                else
                    $("#" + spanid).text(" ");
            });
});

3 个答案:

答案 0 :(得分:0)

收听聚焦事件,检查输入是否无效,然后重新聚焦。

$('#txtfirstname').focusout(function(e) {
    if(invalidInput){
        $('#txtfirstname').focus();
    }
});

答案 1 :(得分:0)

theValue = theValue.replace(/[^a-zA-Z, ]/g, '')
$("#" + spanid).text("alphabets only");
$(this).val(theValue);  <<== Add this
^^^^^^^^^^^^^^^^^^^^ 
$('#txtfirstname').focus();  //Remove this one

<强> Demo

答案 2 :(得分:0)

你不必放弃冻结。诀窍是防止输入事件发生,这样除非你批准它,否则值永远不会改变。

我分叉@Sadikhasan的小提琴: Forked demo

还有一件事,alt属性具有语义值,并且应该在img标记中,您不应该像使用它一样使用它。如果您仍想“引用”其他元素,请考虑使用data-*属性。