【问题标题】:How to concatenate/change the error message if the input is not a valid date in js?如果输入不是 js 中的有效日期,如何连接/更改错误消息?
【发布时间】:2015-10-10 08:10:24
【问题描述】:

我尝试了将近两天,但仍然没有。也许有人可以帮助精通javascript循环的人。

我之前问过这个问题并更改了一些代码,但仍然无法显示预期的数据。并且还在为此苦苦挣扎。

我有这个代码:

$(function(){
var len = $('#groupContainer > div').length;
var data = [];
for(var i=0; i < len; i++){

    var number = $('#number_' + [i + 1]);
    var date = $('#date_' + [i + 1]);
    var count = i + 1;
    var message ="";
    var a = number.map(function(){
        return this.value;
    });
    var b = date.map(function(){
        return this.value;
    });

    var newObj = {number: a[0], date: b[0]}
    data.push(newObj);
}

var message = "";
for(var c = 0; c < data.length; c++)
{        
    haveErrorInGroup = false;
    for(var d in data[c])
    {
        if(data[c].hasOwnProperty(d))
        {      
            if(data[c][d] == "")
            {
                if(!haveErrorInGroup){
                    haveErrorInGroup= true;
                   message += 'Group: ' + [c + 1] + '\n';
                }

                message +=  d + ' is required!\n';
            }
            if(d == "date")
            {
                if(data[c][d].length != 22 && data[c][d] != "")
                {
                    message += 'Invalid Date!\n';
                }

            }

        }

    }


}
if(message){
    alert(message);
}

});

以及预期的输出:

如果第 1 组中的所有字段都已填写,并且第 2 组未显示警报框:

   Group 2:
   Number is required!
   Date is required!

如果所有字段未填写,则显示:

   Group 1, 2 Number is required!
   Group 1, 2 Date is required!

如果日期不是真正的日期:

  Group 1, 2 Date is invalid.

如果其中一个输入无效。

  Group 2 Date is invalid.

如果所有字段都已填写,则什么也不做。

这是我的FIDDLE

【问题讨论】:

  • 真的 - 变量名为 abcd?当变量没有有意义的名称时,会使您的代码更难阅读和理解。
  • 对不起。它仅用于测试目的。
  • 使用更有意义的变量名可以更轻松地解释您的代码。
  • 是的。如果我能度过难关,我会改变它。
  • 同时删除令人作呕的奉承,并尝试缩小您的问题范围。

标签: javascript jquery arrays loops


【解决方案1】:

我认为您正在寻找类似jquery-validate 的东西。我很确定它带有一个本地日期验证器,但如果你想要一个更具体的格式,你可以把一个正则表达式放进去。

【讨论】:

  • 没有。我不想要插件。感谢您的尝试。
  • 好的,你的决定,但这是每个人都这样做的方式。它节省了很多时间。如果您获得报酬,两天的输入验证是不可持续的;)
猜你喜欢
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2021-09-16
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-03
相关资源
最近更新 更多