我在文本框的focusout
上编写了一个函数,如果它是空白的话,想要检查并重点关注它。它没有重新设定焦点。
<div class="controls">
<input type="text" class="form-control" name="inputID" id="inputID"/>
</div>
$('#inputID').focusout(function(e) {
if ($(this).val()=="") {
alert("focus onthe same")
$(this).focus();
e.preventDefault();
}
else {
}
});
jsFiddle链接:https://jsfiddle.net/sw91q0vk/
答案 0 :(得分:1)
我认为您的提醒框和preventDefault
导致问题,您的焦点事件未被解雇,请使用setTimeout
或删除提醒。
我删除了警告框,小提琴就像this
代码更改就像这样
$('#inputID').focusout(function(e) {
if ($(this).val()=="") {
setTimeout(function(){
console.log(323);
$(this)[0].focus();
},500)
e.preventDefault();
}
});
现在我已经删除了警报,但说实话警报是如此2005年,让我们使用一些2016年集合来抛出错误,比如通知或其他什么,那里有很多。
答案 1 :(得分:0)
我需要相同的功能,这是我的变体,包括警报和提交阻止。
jQuery(document).ready(function($){
function checkAddress(e){
var input_address1 = $('#address_1_field');
var hasNumber = /\d/;
if(!hasNumber.test(input_address1.val())){
alert('The address must include a number!');
setTimeout(function(){
input_address1.focus();
},10)
e.preventDefault();
return false;
} else {
return true;
}
}
$('#address_1_field').on('focusout', function(e) {
return checkAddress(e);
});
$('#submit_order_done').on('click', function(e){
return checkAddress(e);
});
});