MVC中的Datepicker在IE中加载缓慢

时间:2017-08-10 14:51:53

标签: c# jquery asp.net-mvc internet-explorer datepicker

我对IE用户体验有疑问(是的,我知道 - 失败的原因)。我的网站在Mozilla和Chrome上运行良好,但每次打开或关闭日期选择菜单时,铬浪费都会持续1-2秒。

这是我的jQuery:

<script>
            $(document).ready(function () {
                $('#IssDate').datetimepicker({
                    theme: 'dark',
                    lang: 'bg',
                    format: 'd.m.Y H:i:s',
                    minDate: '-1970/02/01',
                    maxDate: '+1970/01/08',
                    step: 10,
                    dayOfWeekStart: 1,
                    showAnim: jQuery.support.boxModel ? 'drop' : null, // optional
                    duration: jQuery.support.boxModel ? 'normal' : ''
                });
            });
        </script>
        <script>
            $(document).ready(function () {
                $('[id $= _Date]').datetimepicker({
                    theme: 'dark',
                    lang: 'bg',
                    format: 'd.m.Y H:i:s',
                    step: 10,
                    dayOfWeekStart: 1,
                    showAnim: jQuery.support.boxModel ? 'drop' : null, // optional
                    duration: jQuery.support.boxModel ? 'normal' : ''
                });
            });
        </script>

你能告诉我一个解决方案吗?我已经看过WebApp的评论,但我真的不知道这是否是同一个问题。我已经尝试删除了datepicker的一些功能而没有任何明显的效果变化。

我相信即使是Dropbox和文本字段都是缓慢的,但它并不是那么糟糕。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!

事实证明,我的脚本中有一个递归。我有一个(文档).on(&#39;更改&#39;)功能,它改变了一些字段。然后,当这些字段发生变化时,我还有另一个jQuery来检查它们的变化并触发其他字段的变化。他们在这里:

 $(document).on('change', function () {
                    if ($("#sol_Date").val().trim() != '') {
                        $("#caseStatus").val('Solved');
                        $("#caseStatusDisplay").val('Solved');
                        $("#caseStatus").change();
                    }
                    else {
                        $("#caseStatus").val('In Progress');
                        $("#caseStatusDisplay").val('In Progress');
                        $("#caseStatus").change();
                    }
                });



$(document).ready(function () {
                $("#falsePositives").change(function () {
                    if ($("#caseStatus").val().trim() == 'Solved' && ($("#falsePositives").val().trim() != '' || $("#escTo").val().trim() != '' || $("#dept").val().trim() != '')) {
                        $("#saveBtn").attr('disabled', false);
                        $("#escToValMsg").text('');
                        $("#fpValMsg").text('');
                    }
                    else if ($("#caseStatus").val().trim() == 'Solved' && $("#falsePositives").val().trim() == '' && $("#escTo").val().trim() == '' && $("#dept").val().trim() == '') {
                        $("#escToValMsg").text('You must have either escalated to/department or false positives filled');
                        $("#fpValMsg").text('You must have either escalated to/department or false positives filled');
                        $("#saveBtn").attr('disabled', true);
                    }
                });
            });

正如您可以轻易看到的,这会导致无休止的循环。其他浏览器足够聪明地注意到它并在第一次执行时跳过整个过程。另一方面,IE每次更改字段值时都必须触发循环。编辑完功能后,一切顺利进行。

PS:我没需要2个星期:)在这里填写我的评论要迟到了。