如果输入字段为空,请禁用提交按钮

我试图禁用提交按钮,如果用户没有提供任何文本。

乍一看,它看起来一切正常,但如果用户键入一些文本,然后删除它,提交按钮就会启用。

这是我的代码:

$(document).ready(function(){ $('.sendButton').attr('disabled',true); $('#message').keyup(function(){ if($(this).val.length !=0){ $('.sendButton').attr('disabled', false); } }) }); 

你只在document.ready上禁用,这只在DOM准备就绪时发生一次,但是当textbox变空时你也需要在keyup事件中disable 。 同时将$(this).val.length$(this).val().length

 $(document).ready(function(){ $('.sendButton').attr('disabled',true); $('#message').keyup(function(){ if($(this).val().length !=0) $('.sendButton').attr('disabled', false); else $('.sendButton').attr('disabled',true); }) }); 

或者您可以使用条件运算符而不是if语句。 也使用prop而不是attr作为属性不被jQuery 1.6及以上版本推荐用于禁用,检查等。

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。 要检索和更改DOM属性,例如表单元素的已检查,已选择或已禁用状态,请使用.prop()方法, jQuery文档

 $(document).ready(function(){ $('.sendButton').prop('disabled',true); $('#message').keyup(function(){ $('.sendButton').prop('disabled', this.value == "" ? true : false); }) }); 

试试这个代码

 $(document).ready(function(){ $('.sendButton').attr('disabled',true); $('#message').keyup(function(){ if($(this).val().length !=0){ $('.sendButton').attr('disabled', false); } else { $('.sendButton').attr('disabled', true); } }) }); 

检查演示小提琴

你缺少if语句的else部分(如果textbox为空则再次禁用按钮)和if($(this).val.length !=0){函数中的括号() if($(this).val.length !=0){

请试试这个

    Jquery          

一个简单的方法:

 function toggleButton(ref,bttnID){ document.getElementById(bttnID).disabled= ((ref.value !== ref.defaultValue) ? false : true); }   

对于那些使用coffeescript的人 ,我将全局使用的代码放在我们最常用的表单上禁用提交按钮。 以上对阿迪尔答案的改编。

 $('#new_post button').prop 'disabled', true $('#new_post #post_message').keyup -> $('#new_post button').prop 'disabled', if @value == '' then true else false return