限制用户输入比Numerictextbox的配置

时间:2015-08-08 13:16:38

标签: kendo-ui

我想在Numerictextbox中配置为小数时限制用户十进制输入。我正在使用knockoutjs来观察来自numerictextbox的数据。当用户输入更多小数时,它会在淘汰赛中自动更新,但在控制中它只显示配置的小数。

小数是动态设置为kendo数字文本框,所以我需要限制用户输入小数时更多的定义小数。当用户输入多个小数点的淘汰更新值

一个例子是如果我将小数设置为2.当用户输入56.2456时,敲除会在模型中更新此值,并且在光标移动到下一个控件后,numerictextbox会显示56.25。我想将此值更新到模型中,并且需要限制用户输入超过2位小数。

如何应用此限制?

1 个答案:

答案 0 :(得分:0)

您可以按以下代码执行文本框的按键事件。

    $("#txtXZY").kendoNumericTextBox({
    format: "#.00 \\%",
    min: 0,
    decimals: 2,
    max: 100,
    step: 1,
    spinners: IsSpinner
});


$("#txtXZY").bind("keypress", function (e) {

    if (IsTextSelected(this) == false && e.keyCode !== kendo.keys.ENTER) {
        var character = String.fromCharCode(e.keyCode)
        var newValue = this.value + character;
        if (isNaN(newValue) || parseFloat(newValue) * 100 % 1 > 0) {
            e.preventDefault();
            return false;
        }
        if (parseFloat(newValue) > 100) {
            e.preventDefault();
            return false;
        }
    }
});

function IsTextSelected(input) {
if (typeof input.selectionStart == "number") {
    return input.selectionStart == 0 && input.selectionEnd == input.value.length;
} else if (typeof document.selection != "undefined") {
    input.focus();
    return document.selection.createRange().text == input.value;
}
}