【问题标题】:How to check input value length after paste?粘贴后如何检查输入值的长度?
【发布时间】:2020-07-07 08:12:29
【问题描述】:

我有一个输入字段,用户可以输入代码或从电子邮件中复制/粘贴。 如果给定值具有特定长度,我需要检查输入 val() 的长度以在之后激活按钮。长度检查在键入时工作正常,但不是每次粘贴值时。长度大多为 0 - 但不是每次。我在这里做错了什么,我不明白?它应该每次都有效。

$(document).on('keyup change paste click', '#promocode', function () {
    var code = $(this).val();

    $("#result").html(code.length);

    if (code.length == 8) {
        $("#result").html("length ok");
    }
    else {
        $("#result").html("NOT ok");
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

Copy/Paste a value into this field:
<form>
    <input type="text" id="promocode" placeholder="xxxx-xxx" />
    <div id="result">Enter value (8-digits)</div>
</form>

【问题讨论】:

    标签: html jquery


    【解决方案1】:

    对我(chrome/windows)来说,您的代码可以使用复制/粘贴和打字。唯一一次失败是当我使用右键单击并粘贴时。为了解决这个问题,我将输入事件添加到您的列表中。现在它一直有效。

    $(document).on('keyup change paste click input', '#promocode', function () {
        var code = $(this).val();
    
        $("#result").html(code.length);
    
        if (code.length == 8) {
            $("#result").html("length ok");
        }
        else {
            $("#result").html("NOT ok");
        }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    
    Copy/Paste a value into this field:
    <form>
        <input type="text" id="promocode" placeholder="xxxx-xxx" />
        <div id="result">Enter value (8-digits)</div>
    </form>

    【讨论】:

    • 输入...天哪。我怎么会不知道呢?我完全专注于粘贴事件..大声笑。非常感谢,它现在可以正常工作了!
    【解决方案2】:

        $("#promocode").on('change keydown paste input propertychange click keyup blur', function(){
        if($('#promocode').val().length == 8){
        $("#result").html('okay');
        }
        else{
        $("#result").html('not okay');
        }
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    
      <input type="text" id="promocode" placeholder="xxxx-xxx" />
        <div id="result">Enter value (8-digits)</div>

    试试这个,它包括在输入改变时触发的方法。 fiddle link

    【讨论】:

    • 您的解决方案运行良好,谢谢。我刚刚选择了@mankowitz 答案作为接受的答案,因为他只在我现有的解决方案中添加了一个(缺失的)事件。
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2011-03-07
    • 2011-11-19
    相关资源
    最近更新 更多