繁体   English   中英

如何仅对元素值的前两个字符触发“onchange”?

[英]How to trigger an "onchange" for only first two chars of an element value?

我有一些代码来过滤文本输入的前两个字符。 所以主要方面是,调用一个控制器函数来获取这两个字符的值。 如果这两个字符之一发生变化,我只想触发该功能。

$("#selector").on("keyup", function () {
    if ($(this).val().length >= 2) {
        var firstChar = $(this).val().charAt(0);
        var secondChar = $(this).val().charAt(1);
        var length = 0;
        firstChar.val().on("change", function () {
            some Ajax
        });
        secondChar.val().on("change", function () {
            some Ajax                
        });
    }
   });

您可以保存旧值并在输入更改后比较前两个字符。

 var selector = $("#selector"); var oldValue = selector.val(); selector.on("change", function() { if (this.value.charAt(0) !== oldValue.charAt(0)) console.log(1); if (this.value.charAt(1) !== oldValue.charAt(1)) console.log(2); oldValue = this.value; });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="selector" />

如果您希望在每个字符更改后立即触发事件,那么您可以使用setTimeout0mskeydown事件,以便 keydown 会冒泡并实际更改值。

 var selector = $("#selector"); var oldValue = selector.val(); selector.on("change", onChange); selector.on("keydown", function() { var self = this; setTimeout(function() { onChange.call(self); }, 0); }); function onChange() { if (this.value.charAt(0) !== oldValue.charAt(0)) console.log(1); if (this.value.charAt(1) !== oldValue.charAt(1)) console.log(2); oldValue = this.value; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="selector" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM