在IE中,Kendo小部件/验证器未定义?

时间:2018-04-13 14:56:49

标签: javascript kendo-ui internet-explorer-11

我在这里有点不知所措......我遇到了剑道和Internet Explorer的问题。

我有一个我设置的验证器,我已经完成了我的代码,我的DOM中存在<div id="validatorCheck">{content}</div>。当用户打开我的编辑器时,我会初始化验证器。

$('#validatorCheck').kendoValidator({
                        //validate: function(e) {
                        //},
                        validateInput: function(e) {
                            if(e.valid == false && scrolledToElement == false){
                                scrolledToElement = true;
                                $('#externalEditor').animate({
                                    scrollTop: e.input.offset().top
                                }, 300, function() { 
                                    //Callback after animation
                                });
                            }
                        },
                        rules: {
                            endDateValidation: function(e) {
                                //console.log(e);
                                if (e.is('[data-role=datetimepicker]') && e[0].id == 'endTimeInput') {
                                    var endTimeValid = $('#endTimeInput').data('kendoDateTimePicker');
                                    var startTimeValid = $('#startTimeInput').data('kendoDateTimePicker');

                                    if (endTimeValid.value() < startTimeValid.value()) {
                                        return false;
                                    }
                                }
                                return true;
                            },
                            autoCompleteValidation: function(e){
                                if(e.is('[data-role=autocomplete]')){
                                    var autoCompleteComp = e.data('kendoAutoComplete');
                                    if(autoCompleteComp != undefined){
                                        if(e[0].attributes.hasOwnProperty('required') && (autoCompleteComp.value() == '' || autoCompleteComp.value() == null)){
                                            return false;
                                        }
                                    }
                                }
                                return true;
                            }
                        },
                        messages: {
                            //hasItems: 'Owner Must Be Selected'
                            endDateValidation: 'End Time Must Be Greater Than Start Time',
                        }
                    });

在上面的代码之后,当我单步执行此操作时,我看到了$('#validatorCheck').data('kendoValidator')并且它已被初始化。然后,当用户点击保存按钮时,我呼叫:

$('#validatorCheck').data('kendoValidator').validate()但是,现在$('#validatorCheck').data('kendoValidator')未定义且崩溃。

编辑器从未关闭,没有被破坏,它仍然在DOM中,它具有验证器的数据角色,它是从我在上面的代码中初始化得到的,但它是未定义的。

拼写是正确的,我甚至尝试重新下载我的KendoUI版本以获取新文件等等......但它没有任何帮助。

Chrome,Firefox,Edge等......一切正常。此问题仅发生在IE(目前版本11)中。

我不确定是否有人知道这个奇怪的问题,但我想不出它是怎么回事或如何解决这个问题。

旁注:我有一个下拉列表也会这样做,在我初始化之后它将很好地定义,但有时只是。验证器问题一直在发生。

2 个答案:

答案 0 :(得分:1)

这可能更像是一个jQuery版本问题而不是Internet Explorer(IE)本身的问题。确保Kendo在IE中可以在运行时访问预期版本的jQuery。

答案 1 :(得分:1)

事实证明这是Internet Explorer和Salesforce Lightning Components的一个问题。

Salesforce闪电组件应该是一个自包含的实体,您可以在组件中加载所需的所有脚本,这包括一个JQuery脚本。在现代浏览器中,这很好用。在Internet Explorer中...... Lightning组件中的脚本泄漏到主页面上,因此我加载了两个JQuery,最终导致了问题。

现在我知道了这个问题,这可能会更好地在Salesforce堆栈交换中提供,但我不知道IE是不正确处理的闪电组件,我认为这只是一些IE / Kendo问题。