如何从javascript keypress事件填写php日期

时间:2017-03-28 13:07:53

标签: javascript php dateinterval

我想使用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>

2 个答案:

答案 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>