【问题标题】:Jquery code does not execute when input still focused当输入仍然集中时,Jquery 代码不执行
【发布时间】:2019-01-26 11:32:24
【问题描述】:

我的表单的提交按钮默认是禁用的,当输入的电话号码正确时启用(即:当下面的 div 显示:“OK”时)。

所以我写了这个:

  $(document).on('change', 'input', function() {
    if ( document.getElementById('phone-number-validator').innerText === 'OK') {
      $('.btn-default').prop('disabled', false);
    }
  });

问题是,该按钮仅在电话号码输入未聚焦时才启用。所以问题是:如果用户在填写电话号码输入后按“输入”,或者在输入仍然集中时单击提交按钮,则不会提交表单,因为提交按钮仍然被禁用。

要启用按钮,用户必须在输入之外至少单击一次。

我想更改我的代码,以便即使焦点仍在电话号码输入上,用户也可以提交表单。有没有办法这样做?

【问题讨论】:

  • 能否请您也发布相关的html代码,以便您可以更好地帮助您
  • 试试这个$('.btn-default').removeAttr('disabled');
  • 你应该尝试keyup事件而不是change
  • 大家好,感谢您的帮助。 $('.btn-default').removeAttr('disabled');不改问题;使用keyup 实际上解决了它。我会尽快验证答案@BhushanKawadkar
  • @JulesCorb,当然。此外,您可以使用 jquery 来准备电话验证器元素的文本,而不是 document.getElement...,这将减少您的代码

标签: javascript jquery html


【解决方案1】:

change 事件只会在焦点离开后触发,但您可以使用 keyup 或 keydown 事件处理程序来验证和启用提交按钮

 $(document).on('keyup', 'input', function() {
    if ( $('#phone-number-validator').text() === 'OK') {
      $('.btn-default').removeProp('disabled');
    }
  });

【讨论】:

    【解决方案2】:

    您可以为此使用jQuery keyup 事件:

     $(document).on('keyup', 'input', function() {
        if ( document.getElementById('phone-number-validator').innerText === 'OK') {
          $('.btn-default').prop('disabled', false);
        }
      });
    

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 2013-09-18
      • 1970-01-01
      • 2020-10-18
      • 2020-11-25
      • 2013-07-25
      • 2013-08-09
      • 1970-01-01
      • 2013-06-06
      相关资源
      最近更新 更多