我想在用户输入错误的值时聚焦文本框。但我不知道如何在我的代码中添加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(" ");
});
});
答案 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-*
属性。