6

Estoy casi allí. He creado jQuery datepicker localizado, he agregado validación de formato personalizado, pero no puedo deshacerme de (¿predeterminado?) La validación de formato de fecha de los EE. UU.Validación de formato de fecha personalizada con jQuery datepicker (no se puede deshacer de la validación de fecha de EE. UU.)

estoy haciendo mi campo de fecha como esta:

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

y el código HTML se parece a esto:

<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> 

Por último, puedo conectar (en mi archivo javascript) un control de selector de fechas jQuery para manejar mi campo de fecha:

$(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 });  

}); 

Sin embargo, ahora tengo dos reglas de validación activas en la fecha fi campo, la fecha de los Estados Unidos y esta fecha personalizada.

No puedo deshacerme de esta regla de fecha de los EE. UU., ¿Por qué esta línea $('.date').rules("remove"); no elimina la regla de fecha de EE. UU.?

Gracias,

Igor

Respuesta

13

Se podría tratar de "sobreescribir" el método de validación de fechas en lugar de añadir una nueva:

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

Gran, funciona. – igorludi

+0

Sin embargo, todavía me pregunto por qué el .remove no funcionó. – igorludi

+0

Acabo de pasar más de una hora para descubrir por qué no analizó la fecha correctamente, aunque configuré un formato de fecha personalizado. Gracias. –

3
  date: function (value, element) { 

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

     }, 
Cuestiones relacionadas