Javascript 如何通过回滚剑道UI中以前的有效值来撤消输入值

Javascript 如何通过回滚剑道UI中以前的有效值来撤消输入值,javascript,validation,kendo-ui,Javascript,Validation,Kendo Ui,我有一个输入组件,如下所示: <input type="number" value="0" name="weight" format="0" min="50" max="100"> 我所期望的是: 输入一个介于50和100之间的数字,例如70 关注其他组件,然后再关注此输入 输入一个小于50或大于100的数字,例如20 关注其他组件 我希望框返回到70,而不是填充50,即min属性 感谢您的帮助您可以执行以下操作: var ntb = $("#num").kendoNumeri

我有一个输入组件,如下所示:

<input type="number" value="0" name="weight" format="0" min="50" max="100">

我所期望的是:

  • 输入一个介于50和100之间的数字,例如70
  • 关注其他组件,然后再关注此输入
  • 输入一个小于50或大于100的数字,例如20
  • 关注其他组件
  • 我希望框返回到70,而不是填充50,即min属性

  • 感谢您的帮助

    您可以执行以下操作:

    var ntb = $("#num").kendoNumericTextBox({
        min : 50,
        max : 100
    }).data("kendoNumericTextBox");
    
    var oldvalue = undefined;
    $("#num").on("focusin", function(e) {
        oldvalue = $("#num").val();
    });
    
    $("#num").on("focusout", function(e) {
        var value = $("#num").val();
        if (value < ntb.options.min || value > ntb.options.max) {
            $("#num").val(oldvalue);
        }
    });
    
    看到它在这里运行:

    在KendoNumericTextBox对象中有一个名为“\u old”的字段;至少在处理NumericTextBoxSpineEvent时,这是非常有用的,即:


    非常感谢你,欧娜白。这确实有效。但我有大量的输入和页面。这可能是一种通用方法吗?
    // Save old value in the numeric text box by adding an oldvalue property to it
    $("[data-role='numerictextbox']").on("focusin", function(e) {
        var me = $(this).data("kendoNumericTextBox");
        me.oldvalue = $(this).val();
    });
    
    // Restore saved old value if value is not in range
    $("[data-role='numerictextbox']").on("focusout", function(e) {
        var value = $(this).val();
        var me = $(this).data("kendoNumericTextBox");
        if (value < me.options.min || value > me.options.max) {
            $(this).val(me.oldvalue);
        }
    });
    
    function spinEventHandler(e) {
        alert("delta from spin is: " + (+e.sender._value - e.sender._old));
    }