我试图理解为什么这不起作用。如果我将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之前触发,从而延迟获取正确的值。解决方法是阅读手册并以剑道方式绑定事件
答案 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);
});