1

DatePicker jQuery UI と同じ体験ができる簡単なアプリケーションをアップロードしました: DatePickerValidationMvc : http://sdrv.ms/17tS25J

UI で jQuery UI DatePicker を使用しています。マークアップとスクリプトは次のようになります。

@Html.TextBoxFor(model => model.ExpireDateTime, new { id = "expiration-date", @Value = Model.ExpireDateTime.ToString("dd-MM-yyyy") })

<script type="text/javascript">
    $(function () {
        $('#expiration-date').datepicker({ dateFormat: 'dd-mm-yy' });
    });
</script>

私はリモート検証を使用しており、モデルの属性は次のようになります。

[Remote("IsDateBetweenDateRangeAction", "Home", HttpMethod = "POST")]

Visual Studio のデフォルトの MVC 4 テンプレートを使用しています。したがって、これらのスクリプトを参照しています。

jquery-1.8.2.js jquery-ui-1.8.24.js

生成されるマークアップは次のようになります。

<div class="editor-field">
    <input Value="13-09-2015" data-val="true" data-val-date="The field Expiration Date (DD-MM-YYYY) must be a date." data-val-remote="&#39;Expiration Date (DD-MM-YYYY)&#39; is invalid." data-val-remote-additionalfields="*.ExpireDateTime" data-val-remote-type="POST" data-val-remote-url="/Home/IsDateBetweenDateRangeAction" data-val-required="The Expiration Date (DD-MM-YYYY) field is required." id="expiration-date" name="ExpireDateTime" type="text" value="13-09-2015 09:57:14" /><br />
    <span class="field-validation-valid" data-valmsg-for="ExpireDateTime" data-valmsg-replace="true"></span>
</div>

面白いことに、DatePicker 検証で日付を変更すると、2 回ごとにだまされます。

この経験をしたのは私だけではないようです: https://stackoverflow.com/questions/11341110/jquery-datepicker-only-every-second-click-event-fires

2 回目だけでなく、日付が変更されるたびに検証メソッドを呼び出す方法を知っている人はいますか?

DatePicker jQuery UI と同じ体験ができるシンプルなアプリケーションをアップロードしました: DatePickerValidationMvc: http://sdrv.ms/17tS25J

4

2 に答える 2

3

上記の問題の解決策を見つけました。onClose イベントで実行される関数が答えでした。

$(function () {
    $("#expiration-date").datepicker({

        onClose: function () {
            $("#register-imei-form").validate().element("#expiration-date");
        }

    });
});

このスレッドで答えを見つけました: jQuery UI Datepicker with altfields: Validation not fire when it should

于 2013-09-14T11:02:06.687 に答える
0

JS ファイルをページまたは PartialView に追加して、クライアント*検証* を MVC に追加します。それらは Scripts フォルダにあるはずです。

MSDN 情報:

クライアント側検証の有効化 ASP.NET MVC 3 でクライアント側検証を有効にするには、2 つのフラグを設定し、3 つの JavaScript ファイルを含める必要があります。アプリケーションの Web.config ファイルを開きます。アプリケーション設定で ClientValidationEnabled と UnobtrusiveJavaScriptEnabled が true に設定されていることを確認します。ルート Web.config ファイルからの次のフラグメントは、正しい設定を示しています。

 <appSettings>
  <add key="ClientValidationEnabled" value="true"/> 
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
 </appSettings>

<head>
  <title>@View.Title</title>
  <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
  <script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
  <script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
  <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
</head>
于 2013-09-13T14:22:37.847 に答える