2016-03-22 4 views
1

Ich versuche, die jQuery Mask Plugin by Igor Escobar für Zeitvalidierung zu verwenden:Zeitvalidierung 24h-Format in jQuery Plugin Mask

$("input").mask("Hh:Mm",{ 
    translation: { 
     'H': { pattern: /[0-2]/ }, 
     'h': { pattern: /[0-9]/ }, 
     'M': { pattern: /[0-5]/ }, 
     'm': { pattern: /[0-9]/ } 
    } 
}); 

Bei dieser Lösung ist es möglich, die Eingabe nicht gültig Zeit wie 26:53. Ich kann auch nicht verwenden am oder pm, nur 24-Stunden-Format. Das Muster scheint nur für ein Symbol zu funktionieren. Wie kann ich es für mehr Charaktere verwenden? So etwas wie dies ([01]?[0-9]|2[0-3])

Ich versuche auch Wert nach der Eingabe zu bestätigen:

$("input").each(function() { 
    el = $(this); 
    el.mask("Hh:Mm", { 
     onComplete: function(cep) { 
      if (!/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/.test(cep)) { 
       alert('Error'); 
       el.attr("value",""); 
      } 
     }, 
     translation: { 
      'H': { pattern: /[0-2]/ }, 
      'h': { pattern: /[0-9]/ }, 
      'M': { pattern: /[0-5]/ }, 
      'm': { pattern: /[0-9]/ } 
     } 
    }); 
}); 

Diese Lösung ist nicht so gut, weil ich immer noch der Benutzer erlauben, etwas falsch zu geben. Wie kann ich das beheben?

Antwort

3

fand ich eine Lösung für dieses Problem eine Funktion Maske mit

var maskBehavior = function (val) { 
     val = val.split(":"); 
     return (parseInt(val[0]) > 19)? "HZ:M0" : "H0:M0"; 
    } 

    spOptions = { 
     onKeyPress: function(val, e, field, options) { 
      field.mask(maskBehavior.apply({}, arguments), options); 
     }, 
     translation: { 
      'H': { pattern: /[0-2]/, optional: false }, 
      'Z': { pattern: /[0-3]/, optional: false }, 
      'M': { pattern: /[0-5]/, optional: false} 
     } 
    }; 

    $('.daytimemask').mask(maskBehavior, spOptions); 

diese gut zu funktionieren scheint, aber es ist notwendig, die linke Null Stunden vor dem „12“ hinzuzufügen.

Ich hoffe, das hilft.