我正在尝试检查textarea
是否不为空。如果是:则禁用提交按钮,否则:请禁用它。但是,每当我进行退格操作时,它都会禁用按钮(您可能会说它会在按下keydown时检查它是否为空,以及何时禁用),所以可以说这并不是什么大问题……但是,当我在文本区域中写入内容时,它不会启用“提交”按钮,而是使它的第一个字母保持禁用状态;当我按下第二个键时,它将“识别”输入不为空并启用输入。
这两个函数的外观如下:
function chatArea(tracker) {
let textArea = ($('<textarea/>', {
'col': 50,
'row': 4,
'class': 'form form-control',
'name': 'textareaSubmitData',
'id': 'textareaSubmitData',
'maxLength': 200,
'placeholder': 'Hey there! Feel free to start chatting!'
})).on('keydown', function() {
tracker.chatString = $(this).val();
if($(this).val() == '') {
$('#submitBtnTextArea').attr('disabled', 'disabled');
return;
} else {
$('#submitBtnTextArea').removeAttr('disabled');
}
});
return textArea;
}
function submitBtnTextArea(tracker) {
let btn = ($('<button/>', {
'type': 'submit',
'class': 'btn btn-success',
'name': 'submit',
'id': 'submitBtnTextArea'
})).html('<li class="fa fa-send"> Send!</li>');
return btn;
}
任何禁用和启用逻辑的原因都没有?
答案 0 :(得分:3)
我认为在这种情况下,您应该使用 keyup 。
在实际从文本区域删除字符之前会触发Keydown ,因此,当您执行匿名方法时,字母仍然存在。这就是为什么当您输入第一个字符时,按钮仍然被禁用的原因,因为它包含0个字符。输入新字符时,将有1个字符,并且该按钮变为启用状态。