![](/img/trans.png)
[英]how to enable or disable a button on keypress event of a textbox in javascript
[英]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.