2016-01-18 166 views
0

我有几个Perl CGI页面,其中有多个提交按钮。这是必要的,因为我需要使用表单数据来更改数据库(例如修改,删除,激活)。“Enter”键的默认提交按钮

我不知道什么层是负责任的,但似乎首先在窗体上显示提交按钮,这是您在键盘上单击“Enter”时将执行的窗体。

这里是我的提交按钮,一个页面一个样本:

... 
     # 
     # Modify button 
     # 
     $cgi->submit(
        -name => 'Action', 
        -value => 'Modify', 
    ), 

     # 
     # Delete button 
     # 
     $cgi->submit(
        -name => 'Action', 
        -value => 'Delete', 
    ), 

     # 
     # Activate button 
     # 
     $cgi->submit(
        -name => 'Action', 
        -value => 'Activate', 
    ), 
     # 
     # Reset button 
     # 
     $cgi->submit(
        -name => 'Action', 
        -value => 'Reset', 
    ), 

    ), 

     $cgi->end_form; 

     $sth->finish; 
    } 

本页我想要的“修改”按钮,将默认的(还有更多的是内嵌在网页上提交按钮行)。

我发现那里最接近的东西推荐使用JavaScript提交按钮的所有按钮我不想成为默认,但他们说我仍然需要列出我想要的默认顶部。这将打破我把按钮放在任何地方并选择一个作为默认的目的。

我还看到了一些选项,可能捕捉当用户点击输入时使用JavaScript。

问题:当用户单击Perl CGI表单上的“Enter”键时,如何以任意顺序单击多个提交按钮来设置默认提交按钮?

谢谢你花时间看这个。

+0

从CGI.pm文档:[HTML生成函数应该不再被使用(https://metacpan.org/pod/distribution/CGI/lib/CGI.pod#HTML-Generation-functions-应该-不再视为被使用的)。 – Quentin

+0

感谢您提供此链接并让我意识到这一点。在这个链接中,它提供了一个替代页面:https://metacpan.org/pod/CGI::Alternatives。该页面列出了一些其他Perl模块,如Mojolicious和Dancer2。这些模块是否可以与CGI.pm一起使用,还是替代它们? – WhoYaGonnaCall

+0

那些是它的替代品。如果您想继续使用CGI.pm,请遵循“RAW GCI.pm示例”一节。 – Quentin

回答

1

我不知道是什么层负责

这就是在浏览器的HTML表单基本处理。

但似乎首先在窗体上显示提交按钮,当您单击键盘上的“Enter”时将执行该窗体。

正确

如何设置,当用户点击一个Perl CGI表单上的“Enter”键,有多个提交按钮,以任意顺序默认提交按钮?

在窗体的开头,复制提交按钮。由于它现在是第一个按钮,当通过在文本输入中按Enter提交表单时,它将被触发。

设置tabindex="-1"就可以了,所以它会超出正常的对焦顺序。

将其置于屏幕外,以便它不会显示给用户。

+0

这似乎是一个绝妙的想法昆汀!我在将页面关闭时遇到了一些问题。 -tabindex参数似乎对按钮没有任何影响? $ cgi-> submit(-name =>'submit',-value =>'Modify',-tabindex =>'-1'), – WhoYaGonnaCall

+0

@WhoYaGonnaCall - 在测试时生成tabindex属性。 https://www.evernote.com/l/AAPvY6-tGpRIE56f2mRtWTg4deff7WKelMw当我建立一个[现场示例](http://jsbin.com/vuzehi/1/edit?html,output)的HTML,按下tab跳过如预期那样在中间按钮上方。 – Quentin

0

HTML中有一个名为“hidden”的属性。它可以用来隐藏元素。在显示元素之前,通常情况下必须满足条件。

CGI.pm您可以通过隐藏所需的副本来解决“Enter”键的默认提交按钮。将想要作为默认按钮的按钮添加到表单顶部并添加'-hidden'属性。

$cgi->submit(-name => 'submit', -value => 'Modify', -hidden), 
相关问题