2016-09-14 68 views
0

我已经创建了一个使用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) 
    ) 
    ); 
+2

https://metacpan.org/pod/distribution/CGI/lib/CGI.pod#HTML-Generation-functions-should-no-longer-be-used – Quentin

+2

你有效地问多个问题在这里。 “我如何在HTML页面中放置日期时间选择器?”,“如何为CGI.pm生成标记?” (请参阅以前的评论和“不”)。 “我如何用Perl找到当前的日期和时间?”。你应该关注一个更狭窄的问题。 – Quentin

+1

对于日期选择器,您需要JavaScript。我已经使用[jQuery UI的datepicker](http://jqueryui.com/datepicker/),但可能还有其他很多。 – ThisSuitIsBlackNot

回答

0

添加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") 
    ) 
    ); 

您也可能会发现在使用javascript用Perl这个参考Perl的僧人有所帮助:http://www.perlmonks.org/?node_id=1050387

这里的数据采摘的另一个话题交谈。 jQuery date/time picker

0

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

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

这给出了支持的浏览器和降级一个不错的日期选择器,以一个简单的文本输入它不支持。

您可以使用CGI的HTML创建功能来创建它。

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

但正如其他人所指出的那样,我们已经知道,在HTML创建功能是至少15年一个愚蠢的想法。现在没有人应该使用它们。请改用templating engine

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

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