Asp.Net Kendo UI事件函数未定义“更改未定义”

时间:2016-03-18 10:28:34

标签: javascript c# asp.net user-interface kendo-ui

我正在使用Kendo UI,我正在使用TimePicker小部件。我想在改变时间时调用onchange脚本。它说“变化没有定义” 这是我的Kendo UI代码:

                @(Html.Kendo().TimePicker()
                  .Name("debut_h_std")
                  .Events(e =>
                     {
                         e.Change("change");
                     })
                  .Value("08:00 AM")

                )

这是我的改变功能:

function change() {
        alert("change")
    }

感谢您的回答

2 个答案:

答案 0 :(得分:1)

ASP.NET MVC Kendo UI小部件要求您在全局范围内定义函数

它破坏的原因是因为您的功能甚至没有在该实例中定义,也不在全局范围内定义。因此,请确保您的脚本在全局范围内。你应该在你的剃须刀视图中有这样的东西。

 @(Html.Kendo().TimePicker()
       .Name("debut_h_std")
       .Events(e =>
        {
           e.Change("change");
        })
       .Value("08:00 AM")
       )
<script>
    function change() {
      alert("change")
    }
</script>

如果函数直接放在脚本标记下,则其范围是全局的。确保您没有将该功能放在另一个块中,或者甚至在文档准备就绪之内。如果其内部文档准备好其范围仅在文档的功能块内准备就绪。

关键点
当控制器返回视图时,ASP.NET MVC Kendo UI会将任何窗口小部件的整个剃刀语法转换为jquery函数。这个jquery块将在文档就绪时执行。

如果您正在使用 Jquery Kendo UI ,请确保所有功能都在相同的范围内或至少可访问,即使它在不同的范围内,也可以将功能作为全局范围

答案 1 :(得分:0)

我刚用javascript解决了它

 <script>
            $(document).ready(function() {
                function onOpen() {
                    kendoConsole.log("Open");
                }

                function onClose() {
                    kendoConsole.log("Close");
                }

                function onChange() {
                    kendoConsole.log("Change :: " + kendo.toString(this.value(), 't'));
                }

                $("#timepicker").kendoTimePicker({
                    change: onChange,
                    close: onClose,
                    open: onOpen
                });
            });
        </script>