1

私はタイムピッカーに取り組んでおり、ユーザーが時間を超えて入力することを制限したいと考えています23:59。私は正規表現を使用してこれを試みていますが、成功していません

Fiddle Demo

HTML:

<input type="text" id="test1" placeholder="HH:MM"/>

jQuery

$("#test1").keypress(function(e) {
    var regex = ["([01]?[0-9]|2[0-3])",":","[0-5][0-9]"],
    string = $(this).val() + String.fromCharCode(e.which),b = true;
    for (var i = 0; i < string.length; i++) {
        if (!new RegExp("^" + regex[i] + "$").test(string[i])) {
            b = false;
        }    
    }
    return b;
});

エラーは発生していませんが、何が起こっているのかわかりません。

どんな助けでも大歓迎です。

ありがとうございました

4

2 に答える 2

3

すべての文字を独自の正規表現に対してテストできます。

フィドル

試す

$("#test1").keypress(function(event) 
{
   var regexs = [/[0-2]/,/[0-3]/,/:/,/[0-5]/,/[0-9]/];

   var key = event.which;

   var string = $(this).val() + String.fromCharCode(key)

   var characters  = string.split("");

   var passed = true;

   var isBackspace = key === 8;

   var shouldTest = characters.length < 5 && ! isBackspace;

   passed = ! ( characters.length > 5 && ! isBackspace );

   if(shouldTest)
   {
       for (var i = 0; i < characters.length; i++) 
       {
           var character = characters[i];
           var regex = regexs[i];

           var testFailed = ! regex.test(character) ;

           if( testFailed ) 
           { 
               passed = false; 
               break;
           }

       }
   }

   return passed; 
});
于 2013-07-15T13:13:29.620 に答える