簡體   English   中英

jQuery驗證dd / mm / yyyy格式的日期

[英]jQuery validation for dates in dd/mm/yyyy format

我正在研究ASP.NET MVC 5項目。 我在這樣的視圖中有兩個文本框...

@Html.TextBox("earliestDate", Model.Checklists.EarliestDate)
@Html.TextBox("latestDate", Model.Checklists.LatestDate)

我輸入的日期為“ 01/03/2014”(2014年3月1日)和“ 31/03/2014”(2014年3月31日)。 當我在控制器中放置斷點時,我可以看到在控制器中earlyestDate的值為“ 03/01/2014”(我輸入的日期和月份已經交換了),而latestDate為空。 如果我以yyyy-MM-dd格式輸入日期,則代碼可以按要求工作。

我跟着建議文章。

我已經安裝了“ globalize.js”,並將文章中的代碼添加到了我的視圖中。 什么都沒改變,我仍然得到了上述結果。 因此,我嘗試修改代碼以明確指定所需的區域性,例如,舊代碼被注釋掉,我的新代碼在下面...

@*<script src="~/Scripts/globalize/cultures/globalize.culture.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).js"></script>*@
<script src="~/Scripts/globalize/cultures/globalize.culture.en-IE.js"></script>

還有...

//Globalize.culture('@(System.Threading.Thread.CurrentThread.CurrentCulture.Name)');

Globalize.culture('en-IE');

這仍然沒有任何區別。 所以我嘗試將所需的格式顯式添加到validator.methods.date函數中,如下所示...

$.validator.methods.date = function (value, element) {
    return this.optional(element) ||
        Globalize.parseDate(value) ||
        Globalize.parseDate(value, "dd-MM-yyyy") || // new code
        Globalize.parseDate(value, "yyyy-MM-dd");
}

仍然沒有區別。 我想念什么?

作為參考,這是該視圖中完整的腳本部分,包括上述修改...

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

    <script src="~/Scripts/globalize/globalize.js"></script>
    @*<script src="~/Scripts/globalize/cultures/globalize.culture.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).js"></script>*@
    <script src="~/Scripts/globalize/cultures/globalize.culture.en-IE.js"></script>
    <script>
    $.validator.methods.number = function (value, element) {
        return this.optional(element) ||
            !isNaN(Globalize.parseFloat(value));
    }
    $(document).ready(function () {
        //Globalize.culture('@(System.Threading.Thread.CurrentThread.CurrentCulture.Name)');
        Globalize.culture('en-IE');
    });
    </script>
    <script>
        jQuery.extend(jQuery.validator.methods, {
            range: function (value, element, param) {
                //Use the Globalization plugin to parse the value
                var val = Globalize.parseFloat(value);
                return this.optional(element) || (
                    val >= param[0] && val <= param[1]);
            }
        });
        $.validator.methods.date = function (value, element) {
            return this.optional(element) ||
                Globalize.parseDate(value) ||
                Globalize.parseDate(value, "dd/MM/yyyy") || // new code
                Globalize.parseDate(value, "yyyy-MM-dd");
        }
    </script>
}

您的jQueryval捆綁包中有什么?

我會有同樣的問題,我通過添加腳本~/Scripts/globalize/globalize.js

該腳本解決了日期問題,但通過數字驗證添加了新問題。 如果沒有此腳本,則日期驗證錯誤,數字驗證正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM