繁体   English   中英

禁用按键上的启用按钮

[英]disable enable button on keypress

当文本框中有某些值时,我想启用按钮

这几乎可以正常工作,但是对于一个值,它将失败

就像在文本框中输入1

http://jsfiddle.net/akash4pj/YhQN4/

js

<script>
$(document).ready(function(){

$("#textbx").keypress(function(){
 if ($("#textbx").val().length > 0) {
      $("#btn").removeAttr('disabled');

   }
});

 $("#textbx").blur(function(){
    if ($("#textbx").val().length ==0) {
      $("#btn").attr('disabled','disabled');

   }
  });

});
</script>

HTML代码

 <input id="textbx" type="text" /><button id="btn" disabled="disabled">go</button>

使用keyup代替keypress ,如下所示:

$("#textbx").blur(function () {
    if ($("#textbx").val().replace(/\s{1,}/g, "").length == 0) {
        $("#btn").attr('disabled', 'disabled');
    }
});

另外,我还在代码中添加了.replace(/\\s{1,}/g, "") 这样可以确保(间接)如果用户仅键入空格,则在文本输入模糊时,该按钮仍将被禁用。

小提琴

keypress事件发生在浏览器处理键之前,即在将字符附加到输入值之前,因此,当按下第一个键时,当您的函数检查值长度时,文本框仍为空。

在浏览器将字符附加到输入之后,将发生keyup事件,因此,如果您触发keyup而不是keypress您的代码应该按照您想要的方式工作。

我建议:

$("#textbx").on('keyup blur', function() {
    $("#btn").prop('disabled', $.trim(this.value).length === 0);
});

如其他答案中所述,您应该使用抠像,但是您也不需要监听模糊:

 $("#textbx").keyup(function(){   
    if ($("#textbx").val().trim().length > 0) {
      $("#btn").removeAttr('disabled');
    }
    else
      $("#btn").attr('disabled','disabled');
 });

小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM