如果输入字段为空,请禁用提交按钮
我试图禁用提交按钮,如果用户没有提供任何文本。
乍一看,它看起来一切正常,但如果用户键入一些文本,然后删除它,提交按钮就会启用。
这是我的代码:
$(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