Q:

Validação de Hora

Pessoal estou fazendo uma validação de hora em Javascript. Não consigo digitar as seguintes horas 14:00, 15:00, 16:00 até 20:00, mas outras horas consigo.
Estou fazendo assim:

var mask = "HH:MM",
    pattern = {
        'translation': {
            'H': {
                pattern: /[0-23]/
            },
            'M': {
                pattern: /[0-59]/
            }
        }
    };
$("#QuantidadeHoras").mask(mask, pattern);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.0/jquery.mask.min.js"></script>

<input type="text" id="QuantidadeHoras" />

A:

/[0-23]/ quer dizer 0, 1, 2, ou 3.
E o mesmo se aplica para o segundo caso, [0-59] significa de 0 a 5, ou 9.

Em vez disso, use este outro:

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

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

$('#QuantidadeHoras').mask(mask, pattern);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.0/jquery.mask.min.js"></script>

<input type="text" id="QuantidadeHoras" />

