gpt4 book ai didi

javascript - 输入值转换器覆盖 change.trigger 事件

转载 作者:行者123 更新时间:2023-11-29 21:37:38 30 4
gpt4 key购买 nike

我有一个输入字段,它接受 10 个连续数字,并在输入最后一个数字后将数字格式化为 xxx-xxx-xxxx 格式的电话号码。 IT 还允许用户以上述格式输入号码以及 10 位数字序列。

我还有一个弹出窗口,一旦用户更改值就会出现(在这种情况下,如果用户在字段外单击/单击时值与以前不同)。因为我添加了值转换器,所以每当数字格式化为第 10 位时,更改事件就不再触发。奇怪的是,如果用户以最终将采用的格式键入数字,事件将按预期触发。

phone-format.js

export class PhoneNumberValueConverter {
toView(value) {
return value.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
}
}

输入框

    <input id="phNumber" value.bind="phone | phoneFormat" change.trigger="showModal();"></input>

showModal();

    showModal() {
if(this.hasChanged && this.yesRadio){
$('#updateModal').modal();
}
}

值转换器是否触发了优先于我自己的更改事件?

最佳答案

根据 MDN,change 事件应该在输入元素的值更改后失去焦点时触发。

当输入第 10 位数字时,您的值转换器会格式化该值,导致绑定(bind)系统将格式化值应用于输入。因为在输入失去焦点之前发生的最后一件事是以编程方式设置值(与通过用户输入相比),所以不满足触发 change 事件的条件。

请尝试使用 blur 事件,因为您的更改处理程序已经在检查值是否已更改。

关于javascript - 输入值转换器覆盖 change.trigger 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34414948/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com