gpt4 book ai didi

javascript - 在 keyup 中设置输入值,停止触发更改事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:36:16 26 4
gpt4 key购买 nike

新 fiddle :http://jsfiddle.net/martinnormark/jBZfs/14/ - 新的孤立的例子。查看 Amount 2 的 change 事件是如何被触发的! **

我有一个 jQuery 插件,可以在您输入时以货币格式格式化数字。

您可以在这个 fiddle 中看到它的实际效果:http://jsfiddle.net/martinnormark/Rv4Ug/1/

问题是,如果您输入至少 4 位数字的值(导致需要千位分隔符:1178 变为 1,178),更改事件就会终止。只要您保持在 4 位数以下,不会导致新格式,就会触发 change 事件。

在 fiddle 中,尝试输入 12,然后输入 123。您应该会看到一条文本,上面写着“已引发更改事件”。然后输入 1234 - 不会触发更改事件。

这将与在 keyup 事件处理程序中操作输入元素的值有关:

$this.on("keyup.autoformatcurrency", function(event) {
if ($.inArray(event.keyCode, keyCodes) > -1) {
formatCurrency($(this), true);
}
});

formatCurrency 函数:

function formatCurrency($this, setCaretPosition) {

var rawValue = $this.val(),
floatValue = Globalize.parseFloat(rawValue);

if ($.isNumeric(floatValue)) {
var formattedValue = Globalize.format(floatValue, settings.formatString),
caretPosition = 0;

if (setCaretPosition) {
caretPosition = $this.caret().end + (formattedValue.length - rawValue.length);
}

$this.val(formattedValue);

if (setCaretPosition) {
$this.caret(caretPosition, caretPosition);
}
}

}

(有关完整源代码,请参阅 Github 上的文件:https://github.com/martinnormark/jquery-format-currency/blob/master/src/jquery.formatcurrency.js)

问题是,是否有办法确保更改事件会被触发?

更新 - 浏览器中的当前状态
Chrome:如果数字低于 4 位数字,则触发更改事件。
Safari、IE:永远不会触发 Change 事件,只要以编程方式设置该值。输入字母而不是数字将触发更改事件。
Firefox:有效!
Opera:有效!

最佳答案

最简单的方法是,从 keyup 函数中触发更改事件:

$this.on("keyup.autoformatcurrency", function(event) {
if ($.inArray(event.keyCode, keyCodes) > -1) {
formatCurrency($(this), true);
$(this).change();
}
});

关于javascript - 在 keyup 中设置输入值,停止触发更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8382396/

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