事件中的剑道控制值是控制前一个值

时间:2018-01-17 14:07:54

标签: asp.net-mvc kendo-asp.net-mvc

我试图理解为什么这不起作用。如果我将myTextBox的值设置为5,则触发change事件。 myTextBox的值为null。如果我将值更改为10然后再次触发事件,则值将是前一个值(5)。我将它与在表单上工作的许多文本框中的一个进行了比较,它们看起来是一样的。唯一的区别是包装器对象中的value属性是在有效的属性中设置的,但在不可用的属性中有效。深入研究两个对象元素属性,我看到值是正确的和当前的。任何帮助将不胜感激。

模型属性

    [UIHint("Decimal")]
    [Display(Name = "Example")]
    public decimal? MyTxt{ get; set; }

模板(Decimal.cshtml):

@model decimal?

@{
    var defaultHtmlAttributesObject = new { style = "width:100%" };
    var htmlAttributesObject = ViewData["htmlAttributes"] ?? new { };
    var htmlAttributes = Html.MergeHtmlAttributes(htmlAttributesObject, defaultHtmlAttributesObject);
}


@(Html.Kendo().NumericTextBoxFor(m => m)
            .Format("#.00")
            .HtmlAttributes(htmlAttributes)
)

UI声明

@Html.EditorFor(m => m.MyTxt, new { htmlAttributes = new { @style="width: 100%", @readonly = "readonly" } })

使用Javascript:

var myTextBox = $('#MyTxt').data('kendoNumericTextBox');

$(document).on('change', '#foo', function(){
       var test = myTextBox.value();
})

更新

在文档就绪功能中,我正在绑定更改事件,如下所示:

$('#MyTxt').change({ source: $('#MyTxt'), destination: someObject, isTwoMan: true, crewType: LaborType.Set }, SomeCalcFunction);

jQuery更改事件在kendo之前触发,从而延迟获取正确的值。解决方法是阅读手册并以剑道方式绑定事件

1 个答案:

答案 0 :(得分:0)

问题在于我对变更事件的约束方式。

$('#MyTxt').change({ source: $('#MyTxt'), destination: someObject, isTwoMan: true, crewType: LaborType.Set }, SomeCalcFunction);

会在剑道事件发生前触发。改变它的剑道方式解决了我的问题

$("#MyTxt").bind("change", function (e) {

    var event = jQuery.Event('change', {
        source: $("#MyTxt"),
        destination: someObject,
        isTwoMan: true,
        crewType: LaborType.Set
    });
    SomeCalcFunction(event);
});