尝试检查字符串是否为空,但检查无法正常进行

时间:2018-11-09 10:22:54

标签: javascript jquery

我正在尝试检查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;
}

任何禁用和启用逻辑的原因都没有?

1 个答案:

答案 0 :(得分:3)

我认为在这种情况下,您应该使用 keyup

在实际从文本区域删除字符之前会触发

Keydown ,因此,当您执行匿名方法时,字母仍然存在。这就是为什么当您输入第一个字符时,按钮仍然被禁用的原因,因为它包含0个字符。输入新字符时,将有1个字符,并且该按钮变为启用状态。