【问题标题】:how to fill php date from javascript keypress event如何从 javascript 按键事件中填充 php 日期
【发布时间】:2017-03-28 13:07:53
【问题描述】:

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

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

我该怎么做?

这是我尝试过的,但它不起作用:

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

【问题讨论】:

  • 您知道您的 Javascript 在您的浏览器中运行,而您的 PHP 在您的网络服务器上运行,并且它们需要以某种方式进行通信?
  • 是的,我当然在尝试这个函数 myFunction() { var x = document.getElementById("jumlah").value; document.getElementById("demo").innerHTML = x; }
  • 如果我在 jumlah 中输入 1,那么在演示中也输入 1

标签: javascript php dateinterval


【解决方案1】:

问题是您尝试混合服务器端和客户端变量。

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

x 将是一个 javascript 变量,你不能在你的 php.ini 中使用它。 &lt;?php echo $dates[x];?&gt; 不知道,客户端的x 是什么。

您需要使用 ajax。将x 作为参数发送到ajax.php,并返回数组的属性项。

类似这样的:

$('#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']];

【讨论】:

    【解决方案2】:

    正如弗洛里安所说,您正在混合两件事:后端和前端。

    你应该这样做:

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

    【讨论】:

    • dates = &lt;?php echo json_encode($dates); ?&gt;; 混合语言也是可以避免的,而且会破坏干净的代码原则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2012-10-27
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多