2011-02-13 70 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)' –