2016-03-22 11 views
1

マスク:このソリューションで時間の検証24時間-フォーマットは、私は、時間の検証に<a href="https://github.com/igorescobar/jQuery-Mask-Plugin" rel="nofollow">jQuery Mask Plugin by Igor Escobar</a>を使用しようとしていますプラグイン

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

を、それが入力されていない26:53のような有効な時間に可能です。 amまたはpm(24時間形式のみ)も使用できません。パターンは1つのシンボルに対してのみ機能するようです。より多くの文字のためにどのように使用できますか?この([01]?[0-9]|2[0-3])

ような何か、私はまた、入力した後、値を検証しよう:

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

私はまだ、ユーザーが何かを間違って入力することができますので、このソリューションはあまりよくないです。これをどうすれば解決できますか?

答えて

3

私はこれが正常に動作するようですが、それは「12」時間前に残されたゼロを追加する必要があります。機能マスクに

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

を使用して、この問題への解決策を見つけました

こちらがお役に立てば幸いです。

関連する問題