我遇到了一个我尝试构建的函数的问题。
事实上,我有几个日期应该更改为+ x天或 - x天。
但并非所有日期都应该更改。因为我有一些确认的日期。
实际上在mysql中我有date_action和date_validation列。
当data_validation ='0000-00-00'时,表示未确认。当它等于日期时,表示它已经过验证。
在我的页面中,我显示了很多信息。我想尽可能改变所有未经验证的日期,但我已经失去了我已经建立了这个功能:
<script type="text/javascript">
function lz(x){
return x.toString().replace(/^(\d)$/,'0$1')
}
function addday() {
var items = new Array();
var itemCount = document.getElementsByClassName("datepicker hasDatepicker");
items[0] = document.getElementById("date" + (1)).value;
items[1] = document.getElementById("date" + (2)).value;
items[2] = document.getElementById("date" + (3)).value;
items[3] = document.getElementById("date" + (4)).value;
items[4] = document.getElementById("date" + (5)).value;
items[5] = document.getElementById("date" + (6)).value;
items[6] = document.getElementById("date" + (7)).value;
items[7] = document.getElementById("date" + (8)).value;
items[8] = document.getElementById("date" + (9)).value;
items[9] = document.getElementById("date" + (10)).value;
for (var i = 0; i < itemCount.length; i++) {
items[i] = document.getElementById("date" + (i + 1)).value;
var itemDtParts = items[i].split("-");
var itemDt = new Date(parseInt(itemDtParts[2],10), parseInt(itemDtParts[1],10)-1, parseInt(itemDtParts[0],10)+ +nb);
nb=document.getElementById('nb').value;
itemCount[i].value = lz(itemDt.getDate())+"-"+lz(itemDt.getMonth()+1)+"-"+itemDt.getFullYear()
}
return items;
}
</script>
<script type="text/javascript">
function subday() {
var items = new Array();
var itemCount = document.getElementsByClassName("date");
items[0] = document.getElementById("date" + (1)).value;
items[1] = document.getElementById("date" + (2)).value;
items[2] = document.getElementById("date" + (3)).value;
items[3] = document.getElementById("date" + (4)).value;
items[4] = document.getElementById("date" + (5)).value;
items[5] = document.getElementById("date" + (6)).value;
items[6] = document.getElementById("date" + (7)).value;
items[7] = document.getElementById("date" + (8)).value;
items[8] = document.getElementById("date" + (9)).value;
items[9] = document.getElementById("date" + (10)).value;
for (var i = 0; i < itemCount.length; i++) {
items[i] = document.getElementById("date" + (i + 1)).value;
var itemDtParts = items[i].split("-");
var itemDt = new Date(parseInt(itemDtParts[2],10), parseInt(itemDtParts[1],10)-1, parseInt(itemDtParts[0],10)+ -nb);
nb=document.getElementById('nb').value;
itemCount[i].value = lz(itemDt.getDate())+"-"+lz(itemDt.getMonth()+1)+"-"+itemDt.getFullYear()
}
return items;
}
</script>
这是jsfiddle。事实上,它使用mysql的查询选择好日期:
<?php $sql2 = "SELECT * FROM agenda WHERE n_doss='".mysql_real_escape_string($_GET['n_doss'])."' AND qualite='".mysql_real_escape_string($_GET['qualite'])."' AND liasse='".$_GET['liasse']."' AND `date_validation`='0000-00-00' ORDER BY `date_action` ASC" ;
$rules2=mysql_query($sql2) ; $i2=0;
while($data2=mysql_fetch_assoc($rules2)) {?>
items[<?php echo $i2 ; ?>] = document.getElementById("date" + (<?php echo ++$i2 ; ?>)).value;
<?php }?>
但它取代了与此更改无关的其他日期。
这里是更精确的jsfiddle http://jsfiddle.net/pgLpj/
答案 0 :(得分:0)
根据您帖子的标签,我假设您想要使用JavaScript更改未经验证的日期(使用Datepicker时使用jQuery)。
根据您链接的jsFiddle,date_validation显示为日期或与正则表达式/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/
不匹配的文本。
要测试日期是否已确认,因为您经常使用索引并使用循环内部的变量i
和输入的命名结构:
if(!$('input[name="data['+i+'][date_validation]"]').val().match('/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/')) {
//date not confirmed > add the date element to the to-be-returned array
items.push($('input[name="data['+i+'][date]"]')); //or use items[i]=$('#date'+(i+1)) as you did in your post
}
希望这有帮助!