键入事件触发下一个输入字段的动作

时间:2019-04-19 03:33:55

标签: javascript jquery

我有3个输入框。当用户在其中输入任何值时,我想调用函数以突出显示框。通过使用keyup函数,我可以实现它,但它还会触发其下一个输入元素的keyup函数。下面是我的代码

工作演示- https://www.w3schools.com/code/tryit.asp?filename=G38SF7O5Q7MQ

<div>
    <input type="text" class="cDate" />
    <input type="text" class="cMonth" />
    <input type="text" class="cYear" />
</div>
<div class="error-msg"></div>
<script>
    $(document).ready(function(){
      $('.cDate').on('keyup blur change', function(){
            $(this).next().trigger('focus');
            highlightInputs(this)
      });

      $('.cMonth').on('keyup blur change', function(){
            $(this).next().trigger('focus');
            highlightInputs(this)
      });

      $('.cYear').on('keyup blur change', function(){
            $(this).trigger('focusout');
            highlightInputs(this)
      });
    });

    function highlightInputs(_inputs) {
        $(_inputs).each(function(){
            if($(this).val() == ''){
              $(this).addClass('error');
              $('.error-msg').text('Please enter valid date');
              $('.error-msg').show();
            }
            else{
              $(this).removeClass('error');
              $('.error-msg').text('Please enter valid date');
              $('.error-msg').hide();
            }
        });
    }
</script>

1 个答案:

答案 0 :(得分:0)

对我有用。我只是将您的代码复制到以下代码段中:

$(document).ready(function() {
  $('.cDate').on('keyup blur change', function() {
    $(this).next().trigger('focus');
    highlightInputs(this)
  });

  $('.cMonth').on('keyup blur change', function() {
    $(this).next().trigger('focus');
    highlightInputs(this)
  });

  $('.cYear').on('keyup blur change', function() {
    $(this).trigger('focusout');
    highlightInputs(this)
  });

  $("input").on('keydown', function(e) {
    var code = e.keyCode ? e.keyCode : e.which;
    if (code == 9) {
      e.preventDefault();
      e.stopPropagation();
    }
  });
});

function highlightInputs(_inputs) {
  $(_inputs).each(function() {
    if ($(this).val() == '') {
      $(this).addClass('error');
      $('.error-msg').text('Please enter valid date');
      $('.error-msg').show();
    } else {
      $(this).removeClass('error');
      $('.error-msg').text('Please enter valid date');
      $('.error-msg').hide();
    }
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>
  <input type="text" class="cDate" />
  <input type="text" class="cMonth" />
  <input type="text" class="cYear" />
</div>
<div class="error-msg"></div>