2

だから私はこの問題で何時間も頭を悩ませてきました。日付入力フィールドのローカライズされた検証を作成しています。デフォルトの jquery 日付バリデーターを上書きしましたが、メソッドは正常に動作しているようです。すべてが計画どおりに進んでいるように見えますが、jquery バリデーターでフォームを投稿できません。

カスタム検証メソッドに配置されたブレークポイントは、firebug で適切にヒットし、想定どおりに true を返します。

実行を続けると、赤い四角形の検証エラー フィールドはなくなりますが、検証の概要には MVC で生成されたプロパティ エラーが表示されます。

コードは次のとおりです。

tracker.validate.js

// Replace dots so jq validator can understand what's going on
$(function () {
    $.validator.addMethod(
    "date",
    function (value, element) {
        var s = value;
        s = value.replace(/\./g, '/');

        // Chrome requires tolocaledatestring conversion, otherwise just use the slashed format
        var d = new Date();
        return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value))) || !/Invalid|NaN/.test(new Date(s));
    },
    ""
    );
});

$.validator.unobtrusive.parse();

このフォームが配置されている部分ビューのスクリプト参照は次のとおりです。

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/tracker.validate.js")" type="text/javascript"></script>

日時エディタテンプレート

@model DateTime


<input style="width:44%;display:inline;" type="text" name='@(ViewData.TemplateInfo.HtmlFieldPrefix).Day' value='@Model.Date.ToShortDateString()' class='date'/>
<input style="width:30%;display:inline;" type="text" name='@(ViewData.TemplateInfo.HtmlFieldPrefix).Time' value='@Model.ToShortTimeString()' onblur='formatTimeInput(this)'/>
@Html.HiddenFor(model => model)

日付ピッカーの初期化:

$.datepicker.setDefaults($.datepicker.regional['fi']);

$('.date').datepicker({
    showOn: "button",
    dateFormat: "dd.mm.yy",
    buttonImage: '/content/images/calendarIcon.png',
    buttonImageOnly: true,
    constrainInput: false
});

不足しているものはありますか、またはこれらのデフォルト プロパティ エラーを取り除く方法はありますか?

4

1 に答える 1

0

検証と競合する他のスクリプト ファイルがあったようです。ラインを外しました

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>

_Layout.cshtml から、現在動作しています。

于 2012-08-02T05:55:35.827 に答える