文本框更改事件不会立即影响jquery

时间:2014-10-03 02:46:30

标签: javascript jquery

我正在尝试在输入文本框时启用img按钮。但它在从文本框丢失聚焦后正在工作。如何立即看到变化?

      $("[id$='txtNewPass2']").change(function () {
            if (myPlugin.metReq() == true && $("[id$='txtNewPass2']").val().length > 0) //return true or false
                $("#imgSubmit").removeAttr("disabled").css('opacity', 1);
            else
                $("#imgSubmit").attr("disabled", "disabled").css('opacity', 0.5);
        });

2 个答案:

答案 0 :(得分:1)

使用 keyup input事件。

$("[id$='txtNewPass2']").on('input', function () {
        if (myPlugin.metReq() == true && $("[id$='txtNewPass2']").val().length > 0) //return true or false
            $("#imgSubmit").removeAttr("disabled").css('opacity', 1);
        else
            $("#imgSubmit").attr("disabled", "disabled").css('opacity', 0.5);
    });

推荐keyup而不是keydown的原因是,在下面的代码段中,如果您使用keydown,则该事件将始终落后一个字母。

<强>更新

在玩下面我创建的示例之后。我可以看到input事件创建了更平滑的更新效果。请参阅下面的示例,了解所有三种工作方式的比较

<强>示例:

&#13;
&#13;
$('#keyup-input').on('keyup', function () {
    $('#keyup-div').html($('#keyup-input').val());
  });
$('#keydown-input').on('keydown', function () {
    $('#keydown-div').html($('#keydown-input').val());
  });
$('#input-input').on('input', function () {
    $('#input-div').html($('#input-input').val());
  });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Keyup:</h1>
<input id="keyup-input" type="text" />
<div id="keyup-div"></div>
<br/>
<br/>
<h1>Keydown:</h1>
<input id="keydown-input" type="text" />
<div id="keydown-div"></div>
<br/>
<br/>
<h1>Input:</h1>
<input id="input-input" type="text" />
<div id="input-div"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

@ James123我希望它能按您的意愿运作。我只使用Input事件代替change

$("[id$='txtNewPass2']").on("input",function () {
            if (myPlugin.metReq() == true && $("[id$='txtNewPass2']").val().length > 0) //return true or false
                $("#imgSubmit").removeAttr("disabled").css('opacity', 1);
            else
                $("#imgSubmit").attr("disabled", "disabled").css('opacity', 0.5);
        });