سؤال

أنا أستخدم مربع نص ASP.NET مع jQuery UI DatePicker. يسمح مربع النص بتحريرات بحيث يمكن للمستخدم إدخال تاريخ يدويًا أو مسح إدخال موجود. لقد أضفت comparevalidator لإجراء نوع البيانات تحقق من مربع النص وهذا يسبب خطأ بعد تحديد تاريخ مع DatePicker. يحدث الخطأ في التحقق من صحة جانب عميل ASP.NET:

Microsoft JScript runtime error: 'length' is null or not an object

يحدث الخطأ في جهاز التحقق. كيف يمكنني اصلاح هذا؟ هل من الممكن استخدام DatePicker مع أدوات التحكم في التحقق من ASP.NET؟

ترميز بلدي هو:

<asp:Label runat="server" AssociatedControlID="uxInstallDate">Install Date</asp:Label>
<asp:TextBox ID="uxInstallDate" runat="server" Columns="10" />
<asp:CompareValidator runat="server" ControlToValidate="uxInstallDate" Operator="DataTypeCheck" Type="Date" Text="*" ErrorMessage="Install Date must be a date." Display="Dynamic" />

لاحظ أن سمة المعرف المفقود في CompareValidator مقصود وإضافتها لا تحدث فرقًا. تهيئة jQuery الخاصة بي هي:

$(document).ready(function() {
    $("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true });
});
هل كانت مفيدة؟

المحلول

أعتقد أنني وجدت حلاً. هذا خطأ يحدث في IE ، وليس Firefox (لم أختبر أي متصفحات أخرى). كان الحل هو تجاوز طريقة OnSelect في التهيئة:

$("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true, onSelect: function() { } });

لقد وجدت وصفًا للمشكلة والحل هنا وحل بديل هنا.

نصائح أخرى

قاعدة على حل جيمي و البديل الحل الذي يقدمه ، هنا هو الحل لتجاوز هذا الخطأ الغريب الذي يحدث فقط مع IE.

أفترض أن التاريخ المحدد بواسطة التحكم في DatePicker هو تاريخ صالح ، لذا أخفي الرسالة أو خطأ الصورة في CompareValidator إذا كان مرئيًا.

$(".myControl").datepicker({
    onSelect: function() {
        if ($.browser.msie) {
            if ($(this).next("span").css("display") != "none") {
                $(this).next("span").css("display", "none");
            }
        }
        else {
            $(this).trigger('change');
        }
    }
 });

أتمنى أن يساعد ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top