質問

jQuery UI datepickerでASP.NETテキストボックスを使用しています。テキストボックスでは、ユーザーが手動で日付を入力したり、既存のエントリをクリアしたりできるように編集できます。 CompareValidatorを追加して、テキストボックスでデータ型チェックを実行すると、datepickerで日付を選択した後にエラーが発生します。エラーはASP.NETクライアント側の検証で発生します。

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

ValidatorOnChangeでエラーが発生します。どうすれば修正できますか? ASP.NET検証コントロールでdatepickerを使用することは可能ですか?

私のマークアップ:

<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で欠落しているID属性は意図的であり、追加しても違いはありません。私のjQueryの初期化は次のとおりです。

$(document).ready(function() {
    $("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true });
});
役に立ちましたか?

解決

解決策を見つけたと思います。これはFirefoxではなくIEで発生するバグです(他のブラウザはテストしていません)。解決策は、初期化でonSelectメソッドをオーバーライドすることでした:

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

問題の説明と解決策を見つけましたこちらおよび代替ソリューションこちら

他のヒント

Jamieと代替案の解決策に基づく>彼が提供する解決策は、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