2

私は仕事の最深部に投げ込まれ、プレーンHTML(90年代半ば)を知って育ち、仕事でPHPのフォームを変更するように求められました。他の人が書いたPHPコードを変更できますが、自分で書く方法はありません。私はこのフォームを私が望むように変更しましたが、誰かがそれを助けることができれば、私が変更したい1ビットがあります...

これを2日間続けて、Webを検索し、試してみました。次のようなものがあります。

 <p class="quest">Date from: <input type="text" name="acc2" class="tcal" value="" /> to: <input type="text" name="acc3" class="tcal" value="" />

javascriptを使用してカレンダー(tigraカレンダー)をポップアップし、2つの日付(acc2とacc3)を返します。日付はd / m / Y(DD / MM / YYYY)形式です(ここではヨーロッパ/オーストラリア/ニュージーランドで標準) 。私がやりたいのは、差が42日(6週間)を超えているかどうかを確認することです。それがリンク付きのテキストを表示したい場合は(42日以下で十分です)。テストとしてページに配置した場合:

<?php echo($acc3); ?>

次に、ページに1341442800が表示されます(日付が選択される前)。ユーザーが日付を選択すると、上記の数値はそのままになります(動的ではありません)。

私が望んでいることは可能ですか?そうでない場合は、送信時にチェックしてアラートをポップアップできますか(リンクなし)?私は現在、Javascriptを使用してフォームをチェックしています。例は次のとおりです。

<script language="javascript" type="text/Javascript">
    <!--
        function collect()  {
            if(document.all.ct.value == "TempAcc")
            {
                if(document.all.acc7.value.length <11)
                {
                    alert("You need to fill in your contact number with your FULL number including STD code.");
                    return false;
                }
            }
        }//end function collect
    //-->
    </script>

これに関する助けをいただければ幸いです。私はまだ非常に初心者なので、コードを具体的に指定してください。前もって感謝します。

4

3 に答える 3

1

それは私のために働きます:fiddle.netのライブデモ

// parse dates from DD/MM/YYYY to YYYY/MM/DD
var oldBegin = parseDate("03/06/2012");
var oldEnd = parseDate("07/06/2012");

// calculate difference and format to days
var diff = Math.round((oldEnd - oldBegin)/1000/60/60/24);
alert(diff);


function parseDate(str) {
  var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
  return (m) ? new Date(m[3], m[2]-1, m[1]) : null;
}

編集:ウェブページ にjQueryを含めます。それはjavascriptの部分であなたを助けます。両方の入力フィールドに一意のID(id="date1"やid="date2"など)を指定してから、JavaScriptで値を取得します

$('date1').val();
$('date2').val();

コード全体は次のようになります。

<script type="text/javascript">
//The code will trigger when the user leaves the second input field
$("#date2").focusout(function() {
    // parse dates from DD/MM/YYYY to YYYY/MM/DD
    var date1 = parseDate($('date1').val());
    var date2 = parseDate($('date2').val());

    // calculate difference and format to days
    var diff = Math.round((date2 - date1)/1000/60/60/24);
    alert(diff);


    function parseDate(str) {
      var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
      return (m) ? new Date(m[3], m[2]-1, m[1]) : null;
    }
});
</script>

1つの入力が空かどうかを確認するために、いくつかのifステートメントを追加できるようになりました。

于 2012-07-05T08:02:30.033 に答える
0

PHPJavascriptで書かれた2つの質問/回答があります

PHP

$date1 = "2007-03-24";
$date2 = "2009-06-26";

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

printf("%d years, %d months, %d days\n", $years, $months, $days);

Javascript

var oldBegin = ...
var oldEnd = ...
var newBegin = ...

var newEnd = new Date(newBegin + oldEnd - oldBegin);
于 2012-07-05T07:50:07.780 に答える
0

これを試して :

<script type = "text / javascript">
関数daysBetween(){
    var one = new Date(2012、0、1); // YYYY --MM --DD
    var two = new Date(2012、5、5); // YYYY --MM --DD

    var one_day = 1000 * 60 * 60 * 24

   document.write(Math.ceil((two.getTime()-one.getTime())/(one_day))+ "days")
}
</ script>
于 2012-07-05T07:58:55.590 に答える