2011-02-13 69 views
0

我有一個文本框接受時間(最多5個字符)格式hh:mm或hhmm。請告訴我一種方法,我可以掃描在文本框中輸入的字符串,查找特殊字符和字母? [如果輸入的字符串有這些字符或字母,然後顯示一個警告('請輸入一個有效的時間')]我嘗試了str.match和str.indexOf方法,但它似乎沒有幫助。掃描字符串的特殊字符和字母

<script type='text/javascript'> 
    function clocks(){ 

     var clk = document.getElementById('TIME').value; 
     var ampm = document.getElementById('AMPM').value; 
var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?"; 

    for (var i = 0; i < 5; i++) { 
    if (iChars.indexOf(clks.charAt(i)) != -1) { 
    alert ("Pls enter a valid time"); 
    return false; 
    } 
    } 



.....} 

</script> 
+0

您是否在尋找Java或JavaScript的解決方案?你可以發佈你現在的解決方案嗎 –

+0

檢查這個帖子後的javascript時間掩碼: http://stackoverflow.com/questions/1038754/time-input-field –

+0

@Vijay:我需要一個Javascript的解決方案。 – uno

回答

0

你是如何使用string.match()?這應該工作:

<script type='text/javascript'> 
function clocks(){ 

    var clk = document.getElementById('TIME').value; 
    var ampm = document.getElementById('AMPM').value; 

    if (clk.match(/[^0-9:]/)) { 
     alert("Please enter a valid time"); 
    } 

    // or, an even more precise regex 
    if (!clk.match(/^\d+:\d+$/)) { 
     alert("Please enter a valid time"); 
    } 
.....} 

</script> 

第一個正則表達式匹配應該檢查什麼,是不是數字或「:」字符,如果發現任何引發警報。第二個匹配任何以一個或多個數字開頭的字符串,然後是':'字符,然後是一個或多個數字,然後是字符串的結尾(這是您嘗試匹配的格式)。

+0

非常感謝!我用你提到的第一個,它完美的工作!再次感謝:D – uno

+1

使用正則表達式的'test()'方法會更有效率:'/ [^ 0-9:] /。test(clk)' –