我想在文本框中有一些值时启用按钮
这种方法工作正常,但对于一个值,它将失败
就像在文本框中输入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>
答案 0 :(得分:4)
使用keyup
代替keypress
,如下所示:
$("#textbx").blur(function () {
if ($("#textbx").val().replace(/\s{1,}/g, "").length == 0) {
$("#btn").attr('disabled', 'disabled');
}
});
此外,我还在代码中添加了.replace(/\s{1,}/g, "")
。这可以(间接)确保如果用户只键入空格,当文本输入模糊时,按钮仍将被禁用。
答案 1 :(得分:2)
keypress
事件发生在浏览器处理密钥之前,即在将字符附加到输入值之前,因此当按下第一个键时,当函数检查值长度时,文本框仍为空。
在浏览器将字符附加到输入后发生keyup
事件,因此如果您在keyup
而非keypress
上触发,则代码应按您希望的方式运行。
答案 2 :(得分:2)
我建议:
$("#textbx").on('keyup blur', function() {
$("#btn").prop('disabled', $.trim(this.value).length === 0);
});
答案 3 :(得分:0)
正如其他答案所述,你应该使用keyup,但你也不需要听模糊:
$("#textbx").keyup(function(){
if ($("#textbx").val().trim().length > 0) {
$("#btn").removeAttr('disabled');
}
else
$("#btn").attr('disabled','disabled');
});