jQuery .val() 忽略输入的第一个字符

标签 jquery input addeventlistener event-listener

我有一个输入和一个标签。当用户在输入框中键入任何内容时,我想显示标签。但是,正如您在代码片段(或 jsFiddle 上)中看到的那样,您在输入框中键入的第一个字符将被忽略,您需要键入另一个字符才能使值不为空。

$('input').on('change paste keydown', function(event) {
    var inputID = event.target.id;
    var value = $('#' + inputID).val();
    $('#' + inputID + 'Label').css('visibility', 'visible');   

    if (value == ''){
        $('#' + inputID + 'Label').css('visibility', 'hidden');
    }
})
#input1Label { visibility: hidden; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label id='input1Label'>Label</label>
<input id='input1'>

最佳答案

改为监听 input

keydown,顾名思义,在按下键之前触发,对您来说至关重要的是,在值更新之前触发。

input 不仅具有涵盖您当前正在监听的所有三个事件的优势,而且值更新后触发,这意味着您将获取最新值。

$('input').on('input', event => {
    let inputID = event.target.id;
    $('#'+inputID+'Label').css('visibility', $('#'+inputID).val() ? 'visibile' : 'hidden');
})

关于jQuery .val() 忽略输入的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54161004/

相关文章:

javascript - 如何从数组中过滤掉非日语字符?

javascript - jQuery 中操作一组 id 的函数

jquery - jQuery .data() 如何工作?

c++ - 为什么只有当我在 Windows 控制台程序中按 Ctrl+Z 时,输入有时才会终止?

android - 在 Android Cordova-app 中关闭文本区域和输入字段的自动完成

addEventListener mousemove on 文档准备好

javascript - 使用 animate 中的 Step 函数来变换旋转元素

javascript - 为什么 jQuery Focus 函数第二次不起作用?

django - &lt;input type ="text"> django 模板中字符串中的空格

javascript - 事件监听器无需点击即可运行