我想使用javascript keypress事件自动添加来自php数组的日期。这是我的代码的一部分:
日期数组:
Locality.objects.filter(point__distance_lte=(point, D(km=10)))\
.annotate(distance=Distance('point', point))\
.order_by('distance')
文字输入:
from django.contrib.gis.geos import Point, MultiPoint
points = [
Point((145.137075, -37.639981)),
Point((144.137075, -39.639981)),
]
multipoint = MultiPoint(*points)
point = multipoint.centroid
如果我输入1,那么我想在2015年7月$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");
}
,如果我输入2,那么我将在2015年8月等。
我该怎么做?
这是我尝试过的,但它不起作用:
<input type="text" id="jumlah" size="3" maxlength="3" onkeyup="myFunction()" onkeypress="return hanyaAngka(event)"/>
<p id="demo"></p>
答案 0 :(得分: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']];
答案 1 :(得分:0)
正如弗洛里安所说,你混合了两件事:后端和前端。
你应该这样做:
<script>
function myFunction() {
var value = document.getElementById("jumlah").value,
dates = <?php echo json_encode($dates); ?>;
document.getElementById("demo").innerHTML = dates[value];
}
</script>