我有一些输入字段,如下所示:
<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/