2017-01-25 14 views
-5
var i = 1; 
$("#add_row").click(function(){ 

    var arr = "<tr><td><input type='hidden' name='counter' value='" + i + "'><input type='hidden' id='pd-id-" + i + "' name='pd-id-" + i + "'><input autocomplete='off' type='text' id='pd-search-" + i + "' class='hahaha'><ul style='width: 44.8vw' class='livesearch' id='pd-result-" + i + "' onclick='clickResult()'></ul></td><td><input type='text' required name='workdescription-" + i + "'></td><td><select></select></td><?php 

    $date = new DateTime(); 

    $y=1; 


    if (date('d') < '18' AND date('d') > '2') { 
     for ($x = 1 ; $x <= 16 ; $x++) { 
      echo "<td><input type='text' name='hr-" . i . "-" . $x . "'></td>"; 
     } 
    } else if (date('d') < '3') { 
     for ($x = 16 ; $x <= date('t', strtotime(date('Y-m')." -1 month")) ; $x++) { 
      echo "<td><input type='text' name='hr-" . i . "-" . $y . "'></td>"; 
      $y++; 
     } 
    } else { 

     for ($x = 16 ; $x <= date('t') ; $x++) { 
      echo "<td><input type='text' name='hr-" . i . "-" . $y . "'></td>"; 
      $y++; 
     } 

    } 

    $i++; 

    ?></tr>" 
    ; 

    i++; 

    $("#tablebody").append(arr); 
}); 

私はPHPのエコーの中で文字iをエスケープする必要があります。私はそれらの上にjavascript変数iの値を持たせたい。どうすればいいですか?これを行うには良い方法がありますか?Javascriptの中でPHPコードからどのようにエスケープできますか?

+0

ここで、 'arr'変数は何ですか? –

+1

javascript/jquery関数の中でPHPを使う理由は?私はこれを必要としない。 Javascriptは独自のDateTimeオブジェクトとforループを持っています。あなたはJavaScriptだけであなたの問題を解決することができます。 – Marcel

+0

クライアント側の日付が間違っていると、これも間違っています。私は、サーバー側から取得した日付だけが必要です。精度のために。 – ToldarkenHansam

答えて

0

私が上記のコメントで言ったように、この場合はPHPは必要ありません。あなたはJavascriptだけでそれを解決することができます。あなたの質問に正しく答えるには、JavascriptとPHPで可能な解決策があります。

<table id="my-table"> 
    <tr> 

    </tr> 
</table> 

<template id="my-template"> 
    <td><input type="text" name=""></td> 
</template> 

<script> 
    var day = '<?= (new DateTime())->format('d') ?>', 
     daysOfMonth = '<?= (new DateTime())->format('t') ?>', 
     daysOfMonthOneMonthBefore = '<?= (new DateTime('-1 month'))->format('t') ?>', 
     template = document.getElementById('my-template'), 
     i = 1, 
     y = 1; 

    var positiveInt = new Number(day), 
     positiveIntOneMOnthBefore = new Number(daysOfMonthOneMonthBefore), 
     inputElement = template.content.querySelector('input'); 

    if (positiveInt < 18 && positiveInt > 2) { 
     for (var x = 1; x <= 16; x++) { 
      inputElement.name = 'hr-' + i + '-' x; 
      var clone = document.importNode(template.content, true); 
      document.querySelector('#my-table tr').appendChild(clone); 
     } 
    } else if (positiveInt < 3) { 
     for (var x = 16; x <= positiveIntOneMOnthBefore; x++) { 
      inputElement.name = 'hr-' + i + '-' + y; 
      y++; 

      var clone = document.importNode(template.content, true); 
      document.querySelector('#my-table tr').appendChild(clone); 
     } 
    } else { 
     for (var x = 16; x <= positiveInt; x++) { 
      inputElement.name = 'hr-' + i + '-' + y; 
      y++; 

      var clone = document.importNode(template.content, true); 
      document.querySelector('#my-table tr').appendChild(clone); 
     } 
    } 
</script> 

あなたが言ったように、サーバーからの実際の日付のみが必要です。残りのコードは、ネイティブのjavascriptで行われます。このためにjQueryが必要ないこともあります。このコード例はテストされていません。このコードでは、templateタグのようなHTML5要素を使用しています。正しいHTML5のdoctypeを使用していることを確認してください。その上に、あなたの問題を解決する方法を示すべきである。

+0

ありがとう、これは私の問題を解決しました。 – ToldarkenHansam

0

は、このようなあなたのエコーを試してみてください。

echo "<td><input type='text' name='hr-' + i + '-" . $x . "'></td>"; 

は、すべてのPHPコードが完全に解析され、サーバー側を取得することを忘れないでください。 Javascriptはクライアント側です。 javascriptとphpの構文を混同しないでください。と.とのつながりは、+はjavascriptと同等です。一貫して引用符を使用してください。例えば。 PHPの"とjavascriptの' JavaScriptの"が必要な場合は、\"のようにエスケープしてください。

関連する問題