点燃 UI IgCurrencyEditor

Ignite UI IgCurrencyEditor

我正在尝试以编程方式将货币字段更新为 运行 包含数字计算的值更改事件。我希望使用类似的方法将该值设置为零。

$('.tester').igCurrencyEditor("setFocus");

$('.tester').igCurrencyEditor('option','value', 0);

然后当我模糊不清,或者不确定在这里做什么时,valueChanged 事件应该根据 API 文档触发(它可以在失去焦点或旋转事件时引发) .

但我似乎无法触发值更改事件,它只有在我手动点击输入并更改数字时才有效。

你需要这样的功能:

function clearValue() {
    $('.tester').igCurrencyEditor('option','value', "");
    $('.tester').igCurrencyEditor('field').blur();
}

结果将是货币编辑器中显示的值为“$0.00”并触发 valueChanged 事件。

当用户交互改变编辑器的displayInput值时,valueChangingvalueChanged事件将触发,并且对应的valueInput值与显示不同输入一个。编辑器采用了与所有其他 Ignite UI 控件相同的方法,其中事件不会在 API 调用时触发,因为在执行 API 调用时,开发人员可以选择是否调用他们的API 调用后的事件处理程序,或不调用。

您可以执行两件事来调用您的事件处理程序。第一个是缓存事件处理程序方法并手动调用它:

$('.tester').igCurrencyEditor({
    ...
    valueChanged: valueChanged,
    ...
});

function valueChanged(event, ui) {
    // event handler
};

$('.tester').igCurrencyEditor("setFocus");
$('.tester').igCurrencyEditor('option','value', 0);
valueChanged(null, { /* if you need arguments */ });

第二个是扩展货币编辑器并覆盖执行检查是否应触发这些事件的方法,并使其始终触发事件:

$.widget("ui.igCurrencyEditorExtension", $.ui.igCurrencyEditor, {
    _processValueChanging: function (value) {
        this._triggerInternalValueChange(value);
    }
}

第二种方法要求您切换到使用 igCurrencyEditorExtension 并且可能会产生副作用,因为该方法还会执行其他检查。

无论如何,Alex Marinov 的建议应该可行,但这取决于您的编辑器配置,取决于您是否设置了 nullValue,在编辑器中允许空值等。