Perl CGI日期和时间选择器,自动填充当前日期和时间



我使用perl创建了一个CGI表单,一切都工作得很好,除了我很难找到一个解决方案,我如何才能得到当前的时间和日期填写在表单中,同时给用户的选项,以改变输入的日期和时间选择器。下面是我写的代码:

sub output_form {
    my ($q) = @_;
    print $q->start_form(
        -name => 'main',
        -method => 'POST',
    );
    print $q->start_table;
    print $q->Tr(
      $q->td('Update#:'),
      $q->td(
        $q->textfield(-name => "update_num", -size => 02)
      )
    );
     print $q->Tr(
      $q->td('Date:'),
      $q->td(
        $q->textfield(-name => "date", -size => 50)
      )
    );
     print $q->Tr(
      $q->td('Time:'),
      $q->td(
        $q->textfield(-name => "time", -size => 50)
      )
    );

添加http://jqueryui.com/datepicker/到你的html页面

print "<link rel='stylesheet' href='//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css'>";
print "<script src='//code.jquery.com/jquery-1.12.4.js'></script>";
print "<script src='//code.jquery.com/ui/1.12.0/jquery-ui.js'></script>";

然后将ID标签添加到您的文本字段。

print $q->Tr(
      $q->td('Date:'),
      $q->td(
        $q->textfield(-name => "date", -size => 50, -id => "datepicker")
      )
    );

您可能还会发现perlmonks提供的关于使用javascript的参考:http://www.perlmonks.org/?node_id=1050387

这里是另一个关于数据选择器的话题。jQuery日期/时间选择器

如果你知道你的用户将使用Edge或Chrome等现代浏览器,那么你可以使用HTML5 date输入。

<input type="date" value="2016-09-15">

这在支持的浏览器上提供了一个很好的日期选择器,并降级为不支持的简单文本输入。

你可以用CGI的HTML创建函数来创建它。

$q->input({type => 'date', value => '2016-09-15'});

但是正如其他人指出的那样,我们知道HTML创建函数是一个愚蠢的想法至少有15年了。现在没人应该用它们了。请使用模板引擎。

至于得到日期。最简单的选择可能是使用Time::Piece。

use Time::Piece;
my $date = localtime;
say $q->input({type => 'date', value => $date->strftime('%Y-%m-%d')});