[英]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" />
如果您希望在每个字符更改后立即触发事件,那么您可以使用setTimeout
为0ms
的keydown
事件,以便 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.