使用Javascript / JQuery进行时间验证(和比较)

时间:2009-08-07 13:37:20

标签: javascript jquery validation date time

首先为在多天内创建我的第三个Javascript问题而道歉 - 我真的很想在这个项目中推动自己的这个领域,并且感谢我的研究和你的技能以相当好的速度发展这里有很棒的帮助,特别是redsuqare !!

我有一张桌子,人们可以进入时间,并有一个面具,它会检查输入格式为99:99 - 这很好,但理想情况下我想限制它是不超过23:59!

这是我目前的代码,拼凑出最好的代码,但不出所料不行......

$.each($('#hoursavailable tr td :checkbox'), function() {

    var $this = $(elem); // cache the object
    var $row = $this.closest('tr'); // find the nearest table row
    if($this.is(':checked')) {
        // do nothing!
    } else {
        $row.each(':text'),function() {
            var splittime = $(this).split(":");
            if(splittime[0] > 22 || splittime[1] > 58) {
                alert('please enter a valid date'); return false;
            }
        }
    }
});

还值得注意的是每行/ tr有两个输入 - 如果我能以某种方式比较两者,它绝对是理想的,以确保第一个在第二个之前,但是欣赏可能更多超越我目前的东西:(

由于

4 个答案:

答案 0 :(得分:3)

我认为您需要的是以下更改,因为您在文本输入周围执行每个操作,因此您需要获取值并将其拆分。

$row.find(':text').each(function() {
            var splittime = $(this).val().split(":");
            if(splittime[0] > 22 || splittime[1] > 58) {
                    alert('please enter a valid date'); return false;
            }
});

然而,为了节省自己重新发明轮子,为什么不查看validate plugin,你可以配置正则表达式来处理数据验证。

虽然我很欣赏手动滚动也是一个很好的学习曲线。

答案 1 :(得分:3)

答案 2 :(得分:1)

当你真的只需要一个

时,你会厌倦你的生活

这应该让你得到一些警告,如下所述。

    $("#hoursavailable :checked").each(function() {
        var splittime = $(this).parents("tr").find(":text").val().split(":");
        if (splittime[0] > 22 || splittime[1] > 58) {
            alert('please enter a valid date'); 
            return false;
        }        
    });

我假设你在父母身上只有一个文本框(因此 .find(“:text”)。你可以考虑添加一个类,但要记住类选择器很慢。

此处没有验证,因此您可能需要添加更多内容,但前提是可行的。

答案 3 :(得分:0)

从不同方法合成以检查max&格式化。

    var timeFieldValue = $(this).val();
    re = /^\d{1,2}:\d{2}([ap]m)?$/;
    if(timeFieldValue != '' && !timeFieldValue.match(re)) {
      alert("Invalid time format: " + timeFieldValue);
      $(this).focus();
      return false;
    }
    var splittime = timeFieldValue.split(":");
    if(splittime[0] > 23 || splittime[1] > 59) {
      alert('Please enter a valid time');
      return false;
    }