2017-03-28 74 views
0

我想使用javascript keypress事件從php數組中自動添加日期。這裏是我的代碼部分:如何從javascript keypress事件填充php日期

日期排列:

$period = new DatePeriod(new DateTime("2015-07-03"), new DateInterval('P1M'), new DateTime("2018-07-09")); 
foreach ($period as $date) { 
    $dates[] = $date->format("M Y"); 
} 

文本輸入:

<input type="text" id="jumlah" size="3" maxlength="3" onkeyup="myFunction()" onkeypress="return hanyaAngka(event)"/> 
<p id="demo"></p> 

我想echo 2015年7月,如果我輸入1,2015年8月,如果我輸入2等。

我該怎麼做?

這是我嘗試過,但它不工作:

<script> 
    function myFunction() { 
     var x = document.getElementById("jumlah").value; 
     var i='<?php echo $dates[x];?>'; 
     document.getElementById("demo").innerHTML = i; 
    } 
</script> 
+0

你知道你的瀏覽器的JavaScript運行,並在你的web服務器的PHP,他們需要以某種方式溝通? –

+0

是的,當然是iam嘗試這個函數myFunction(){var x = document.getElementById(「jumlah」).value; \t document.getElementById(「demo」)。innerHTML = x; } –

+0

如果我在jumlah中輸入1,那麼在演示中也是1 –

回答

0

問題是你嘗試混合服務器端和客戶雙方的變量。

var x = document.getElementById("jumlah").value; 
var i='<?php echo $dates[x];?>'; 

x將是一個JavaScript變量,你不能在你的PHP中使用。 <?php echo $dates[x];?>不知道,客戶端的x是什麼。

您需要使用ajax。將x作爲參數發送到ajax.php,並返回數組中的propery項。

事情是這樣的:

$('#jumlah').on('keyup', function() { 
    $.get('ajax.php', {x: $(this).val()}, function(response) { 
     $('#demo').html(response) 
    }); 
}); 

在PHP

$period = new DatePeriod(new DateTime("2015-07-03"), new DateInterval('P1M'), new DateTime("2018-07-09")); 
foreach ($period as $date) { 
    $dates[] = $date->format("M Y"); 
} 
echo $dates[$_GET['x']]; 
0

正如弗洛裏安說,你是混合兩件事情:後端和前端。

你應該做這樣的事情:

<script> 
    function myFunction() { 
     var value = document.getElementById("jumlah").value, 
      dates = <?php echo json_encode($dates); ?>; 

     document.getElementById("demo").innerHTML = dates[value]; 
    } 
</script> 
+0

'dates = <?php echo json_encode($ dates); ?>;'混合語言也是一個可以避免的事情,並打破乾淨的代碼原則。 – vaso123

+0

你是對的... –