嗯,这就是发生的事情.
我们之前都看到了这一点:只有在我们在输入文件中输入内容后,按钮才会变为活动状态并且可单击.我正在努力实现这一点.我想我要么走错了路,而且我应该以不同的方式放置我的jQuery选择器,或者这只是代码的错误.
$('textarea').bind({'keyup' : function(){ if ($(this).val().trim().length){ $('.send-Feedback').removeClass('inactive').click(function(){ console.log('clicked'); }); } else { $('.send-Feedback').addClass('inactive').off('click'); } }})
基本上,我在控制台中多次看到“clicked”,但如果我在if检查之前添加了console.log(‘key pressed’),那么每次keydown都会按预期显示一次.
有什么建议?
解决方法
您也可以将按钮设置为禁用.这将阻止点击事件触发:
if($('textarea').val().trim().length > 0) $('.send-Feedback').removeAttr('disabled'); else $('.send-Feedback').attr('disabled','disabled');
然后分开你的点击功能:
$('textarea').on('input',function(){ ... }); $('.send-Feedback').on('click',function() { ... });
thing is,it’s not really a button,but an
<a>
在这种情况下,您可以使用类,我想这是您目前正在做的事情:
HTML:
<a href="#" class="send-Feedback disabled">Click</a>
JavaScript textarea长度检查:
if( $(this).val().trim().length > 0 ) $('.send-Feedback').removeClass('disabled'); else $('.send-Feedback').addClass('disabled');
JavaScript点击功能:
$('.send-Feedback').on('click',function(e) { e.preventDefault(); if($(this).hasClass('disabled')) return; alert('Clicked!'); });