6

Już prawie jestem. Utworzono lokalny dateticker jQuery, dodano sprawdzanie formatu niestandardowego, ale nie można się pozbyć (domyślnie?) Sprawdzania formatu daty w USA.Niestandardowe sprawdzanie formatu daty za pomocą jQuery datepicker (nie można pozbyć się walidacji daty w USA)

Mam renderowania moje pole daty tak:

... 
@Html.EditorFor(m => m.JobDate) 
@Html.ValidationMessageFor(m => m.JobDate) 
... 

i HTML wygląda następująco:

<input class="date hasDatepicker" data-val="true" data-val-required="The JobDate field is required." id="JobDate" name="JobDate" value="28.6.2011" type="text"> 
<span class="field-validation-valid" data-valmsg-for="JobDate" data-valmsg-replace="true"></span> 

Wreszcie podłączyć (w moim pliku javascript) kontroli datepicker jQuery do obsługi mojego pola daty:

$(document).ready(function() { 
    jQuery.validator.addMethod(
     "hrDateValidator", 
     function(value, element) { 
       try { jQuery.datepicker.parseDate('d.m.yy', value); return true; } 
       catch(e){return false;} 
      }, 
      "Datum nije u formatu d.m.gggg" 
     ); 

    $('.date').datepicker({ dateFormat: "d.m.yy" }); 
    $.datepicker.setDefaults($.datepicker.regional["hr"]); 
    $('.date').rules("remove"); 
    $('.date').rules("add", { hrDateValidator: true });  

}); 

Jednak teraz mam dwie reguły sprawdzania poprawności aktywne w dniu fi eld, data amerykańska i ta niestandardowa data.

Nie mogę się pozbyć tej amerykańskiej reguły dotyczącej daty, dlaczego ta linia $('.date').rules("remove"); nie usuwa reguły daty USA?

Dzięki,

Igor

Odpowiedz

13

Można próbować "nadpisać" metody data walidacji zamiast dodawania nowego:

jQuery.validator.methods["date"] = function (value, element) { ... } 
+0

Wielki, to działa. – igorludi

+0

Jednak nadal zastanawiam się, dlaczego .remove nie działa? – igorludi

+0

Po prostu spędziłem ponad godzinę, aby dowiedzieć się, dlaczego nie przeanalizowano poprawnie daty, mimo że ustawiłem niestandardowy format daty. Dzięki. –

3
  date: function (value, element) { 

      try { jQuery.datepicker.parseDate('d.m.yy', value); return true; } 
      catch (e) { return false; } 

     }, 
Powiązane problemy