2

我有一个输入字段,用户可以输入代码或从电子邮件中复制/粘贴。如果给定值具有特定长度,我需要检查输入 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>

4

2 回答 2

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>

于 2020-07-07T08:31:34.640 回答
1

    $("#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>

试试这个,它包括在输入更改时将触发的方法。小提琴链接

于 2020-07-07T08:35:28.593 回答