0

我尝试构建的功能遇到了麻烦。

事实上,我有几个日期应该更改为 + 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/

4

1 回答 1

0

根据您帖子的标签,我假设您想使用 JavaScript 更改未验证的日期(在使用 Datepicker 时使用 jQuery)。

根据您链接的 jsFiddle, date_validation 显示为日期或与 regexp 不匹配的文本/^[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
}

希望这可以帮助!

于 2012-10-01T13:35:07.660 回答