焦点设置集中在同一个cotrol上

时间:2016-01-29 09:38:50

标签: jquery

我在文本框的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/

2 个答案:

答案 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);
  });         
});