Javascript 带正则表达式的多If

Javascript 带正则表达式的多If,javascript,jquery,regex,Javascript,Jquery,Regex,我对if和regex有点问题,没有发现我的错误:-( 提交时,我有一个each循环遍历所有输入字段(works) 然后,在名称中的“von”处的所有输入字段上都有一个if 如果其中没有字符,那么第一部分非常有效(独立),而使用正则表达式的另一部分则不起作用:-( 因此,如果字段中没有任何内容,并且格式不符合24小时时间格式00:00或09:30,则应运行if 因此,当字段中没有任何内容且输入不符合24小时时间格式时,红色边框应可见 现在,它每次运行时都会有正确的输入和错误的输入:-( 守则: $

我对if和regex有点问题,没有发现我的错误:-(

提交时,我有一个each循环遍历所有输入字段(works)

然后,在名称中的“von”处的所有输入字段上都有一个if

如果其中没有字符,那么第一部分非常有效(独立),而使用正则表达式的另一部分则不起作用:-(

因此,如果字段中没有任何内容,并且格式不符合24小时时间格式00:00或09:30,则应运行if

因此,当字段中没有任何内容且输入不符合24小时时间格式时,红色边框应可见

现在,它每次运行时都会有正确的输入和错误的输入:-(

守则:

$(submit1).click(function (e) 
{
    e.preventDefault();

    var regtime = /([01]?[0-9]|2[0-3]):[0-5][0-9]/;

    $("input").css({"border": "1px solid #bbb"});

    $("input").each(function(index) {

        if($('input[name$="[von]"]').val() == '' || (!regtime.test($('input[name$="[von]"]'))))
        {
            $('input[name$="[von]"]').css({"border": "solid", "border-color": "red"});
        }
    });
});
谢谢!

试试看

var valid = true;
//loop through only the desired input fields
$('input[name$="[von]"]').each(function () {
    //get the value of the current input fields in the loop
    var $this = $(this),
        value = $this.val();
    //target the value in the regex
    if (value == '' || !regtime.test(value)) {
        $this.css({
            "border": "solid",
                "border-color": "red"
        });
        valid = false;
    }
});

if (!valid) {
    //prevent form submit
}
因为TJ删除了答案,借用了他对正则表达式测试失败的解释

将jQuery对象传递到RegExp#test将隐式调用toString 因此,您要测试的值应该是“[对象]”而不是 而不是输入的值

试一试

因为TJ删除了答案,借用了他对正则表达式测试失败的解释

将jQuery对象传递到RegExp#test将隐式调用toString 因此,您要测试的值应该是“[对象]”而不是 而不是输入的值


不过需要添加一点内容;如果输入为空或错误,则边框应该是红色的。如果不是,则返回默认值。您必须使用
$(“input”).css({“border”:“1px solid#bbb”);
@KarelG我想
$(“input”).css({“border”:“1px solid#bbb”)添加一个
@KarelG;
将所有输入字段重置为默认边界是的,对我来说这似乎是一个验证函数。这就是为什么我想添加它…不确定。我错过了.val(),因此它没有检查值:-(…还感谢在特定字段上尝试循环,但我必须验证几乎所有字段(其中一个未验证)因此,我建议最好在字段中使用一个secound if循环遍历所有内容,并使用VALEROR=1或VALEROR=0之类的错误处理方法来防止出现错误时提交帖子?不过需要添加一点内容;如果输入为空或错误,则边框应为红色。如果没有,则返回默认值。您必须添加带有
$(“输入”).css({“边框”:“1px solid#bbb”})的
else
$(“输入”).css({“边框”:“1px solid#bbb”})
将所有输入字段重置为默认边框是的,对我来说这似乎是一个验证函数。这就是我想添加它的原因…不确定。我错过了.val()所以它没有检查值:-(…也感谢您在特定字段上验证了一个循环,但我必须验证几乎所有字段(一个未验证)因此,我建议在字段中使用一个secound if循环遍历所有内容,并使用VALEROR=1或VALEROR=0之类的方法进行错误处理,以防止出现错误时提交帖子?