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 に答える