【问题标题】:Setting up a live refresh on select drop down在选择下拉菜单上设置实时刷新
【发布时间】:2011-09-21 22:50:47
【问题描述】:

我目前设置了一个选择下拉菜单,它做了三件事:

  • 默认情况下,它会选择未来 48 小时后的日期和当前月份
  • 为了防止选择过去的日期,它只显示所选日期,直到当月月底
  • 系统的另一个限制是它会显示直到日历年年底的所有月份

但现在我有一个问题!让我用这个例子来解释我的困难

  • 在撰写本文时,默认日期为 9 月 23 日。 9 月 23 日之前没有其他日期可供选择
  • 用户可以选择从 9 月 23 日到 9 月 31 日的日期
  • 用户还可以选择从 9 月到 12 月的月份

现在,当用户尝试从不同月份选择日期时,就会出现问题。日期限制仍然存在!因此,如果我切换到 10 月,我只能选择 10 月 23 日至 10 月 31 日的日期。这是错误的,因为我想选择从 10 月 1 日到 10 月 31 日的日期。

当用户切换到另一个月份时,如何实时刷新下拉菜单以更新日期条目?

这是我现在使用的代码:

<label for="date"><?php echo __('Pickup Date') ?> <span>*</span></label>
<?php
$curr_day = date('j', strtotime('+ 48 hours'));
$day = range (1, 31);
$day = array_slice($day, $curr_day-1);
$select = "<select name=\"day\">\n";
foreach ($day as $key => $val) {
    $select .= "\t<option val=\"".$key."\"";
    if ($key == $curr_day) {
        $select .= " selected=\"selected\">".$val."</option>\n";
    } else {
        $select .= ">".$val."</option>\n";
    }
}
$select .= "</select>";
echo $select;
?>
    &nbsp;:&nbsp;
<?php 
$curr_month = date("m");
$month = array (1=>"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
$month = array_slice($month, $curr_month-1);
$select = "<select name=\"month\">\n";
foreach ($month as $key => $val) {
    $select .= "\t<option val=\"".$key."\"";
    if ($key == $curr_month) {
        $select .= " selected=\"selected\">".$val."</option>\n";
    } else {
        $select .= ">".$val."</option>\n";
    }
}
$select .= "</select>";
echo $select;
?>

提前非常感谢!

【问题讨论】:

  • 提交时一定要验证服务器上的日期。您会惊讶地发现有多少种数据发布方式是您的下拉菜单未“授权”的。

标签: php


【解决方案1】:

你将使用 JavaScript 来有效地做到这一点,如果你很灵活的话,那就是 jQuery。

$('select').change(function(){
    updatetheselect;
});

为此,制作一个 PHP 页面,使用 json_encode() 输出 json 数组中的值:

{"option1":"value"}

然后使用 AJAX 获取信息并解析:

$.getJSON('jsonstuff.php',{month:'august'},function(json) {
    json.each(function(key,value){
        $('select').append('<option value="'+key+'">'+value+'</option>');
    });
});

此功能未经测试。

http://jsfiddle.net/tBrXt/2/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多