javascript - 将日期列表添加到数组,验证并获取最大值

标签 javascript jquery html arrays validation

我有一些输入字段,如下所示:

<input type="text" name="date_1" class="dataList" value="2009-12-30" />
<input type="text" name="date_2" class="dataList" value="2007-06-12" />
<input type="text" name="date_3" class="dataList" value="2009-10-23" />


<input type="text" name="date_max" class="result" value="0000-00-00" />

我必须做这样的事情:

1) 添加到属性为 class="dataList"的所有输入字段的日期数组列表(字段包含格式为 yyyy-mm-dd 的日期)

2) 检查所有字段是否已填满,并检查所有日期的格式是否正确(月份不超过 12,日期不超过 31,所有 10 个字符的长度)

3A)如果第二点的条件为真,则:

-按照最大值到最小值对数组进行排序

- 从数组中获取第一个元素并将其设置为 name="data_max"的输入值

3B) 如果第二点的条件为假,则:

- 获取“0000-00-00”并将其设置为 name="data_max"的输入值

我已经在 PHP 中完成了所有这些操作,但我想在 jQuery 中完成这些操作。

在 jQuery 中,我可以实时更新 data_max 字段的值。

请给我一些建议,我应该使用哪些功能。

最佳答案

试试这个...

<html>
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
        var dataList = new Array();
        $(document).ready(function()
        {
            update();
        });

        function update()
        {
            dataList = new Array();
            $('.dataList').each(function(i)
            {
                dataList[i] = this.value;
            });

            if(confirmDates(dataList))
            {
                // Perform sort from max to min
                dataList.sort();
                dataList.reverse();

                $("input[name$='date_max']").val(dataList[0]);
            }
            else
            {
                $("input[name$='date_max']").val("0000-00-00");
            }
        }

        function confirmDates(arrayList)
        {
            for(var i in arrayList)
            {
                // Check length is 10
                if(arrayList[i].length != 10)
                    return false;

                // Check month not more than 12
                var year = arrayList[i].substring(0, 4);
                var month = arrayList[i].substring(5, 7);
                var day = arrayList[i].substring(8, 10);

                if(parseInt(month) > 12 || parseInt(day) > 31)
                    return false;
            }

            return true;
        }
    </script>
</head>
<body>                                                       
    <input type="text" name="date_1" class="dataList" value="2009-12-30" />
    <input type="text" name="date_2" class="dataList" value="2007-06-12" />
    <input type="text" name="date_3" class="dataList" value="2009-10-23" />
    <input type="text" name="date_max" class="result" value="0000-00-00" />
    <button onclick="update()" value="Update" />
</body>
</html>

关于javascript - 将日期列表添加到数组,验证并获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1745039/

相关文章:

jQuery SlideDown 使其他元素跳转

java - 任何 Javascript 都会阻止我的程序抓取此页面

javascript - 在 Nodejitsu 上运行 meteor 应用程序

javascript - 神秘 react 错误 "unstable_flushDiscreteUpdates: Cannot flush updates when React is already rendering."

javascript - 如何防止谷歌浏览器输入建议?

Javascript(Jquery) 在 HTML header 中执行,但在外部 JS 文件中不执行

javascript - Ajax 成功插入带有进度条的表格

c# - 在 c sharp 类中修改 HTML 文件

javascript - 如何在 Bootstrap 中将单选按钮设置为 "checked"?

Javascript:设置标签文本