日付型の入力を持つasp.net MVC4を使用して、データ入力フォームを設計しています。
クロムとjQueryUI datepickerで目立たないjQueryライブラリを使用すると、datepicker(つまり、14/02/2013)を使用して正しい日付形式を選択し、フォームを送信した後、まだエラーが発生しました(フィールドnews_dateは日付でなければなりません)。
一部の検索では、jQuery.globilization ライブラリを使用する必要があることが示唆されました。ドキュメントを読んだ後、次のスクリプトへの参照を追加しました。
$(document).ready(function () {
$.culture = Globalize.culture("en-GB");
$.validator.methods.date = function (value, element) {
return this.optional(element) || Globalize.parseDate(value, "dd/MM/yyyy", "en-GB");
}
});
しかし、私はまだエラーが発生しています
上記のコードを chrome でデバッグすると、"value) の値が "2014-02-14" であることがわかります。
以下は、レンダリングされる html です。
<div class="editor-field">
<input class="text-box single-line datepicker hasDatepicker input-validation-error" data-val="true" data-val-date="The field news_date must be a date." id="news_date" name="news_date" type="date" value="">
<script type="text/javascript">
$(function () {
$(".datepicker").datepicker({ dateFormat: "dd/MM/yyyy" });
});
</script>
<span class="field-validation-error" data-valmsg-for="news_date" data-valmsg-replace="true"><span for="news_date" class="" style="">The field news_date must be a date.</span></span>
</div>
UPDATE : ちなみに、バリデータ メソッドをハードコードに変更した場合。すなわち
$.validator.methods.date = function (value, element) {
return this.optional(element) || Globalize.parseDate("14/03/2014", "dd/MM/yyyy", "en-GB")
}
できます。したがって、問題である POST または送信の検証の前に、日付がページに保存されている形式であることは間違いないようです。
クロムコンソールで実行すると日付を選択した後に更新$('#news_date').val()
すると、「2014-02-14」が表示され、スクリプトをデバッグして、値がバリデータメソッドに渡されていることを確認できます。これはこの値であるため、英国の日付と一致しませんformat は、検証に合格する値ではなく、null を返します。では、日付ピッカーが選択後に日付を保存する方法に問題がありますか?
Chromeでこれに対する回避策を見つけた人はいますか?