【问题标题】:Using html link as form button使用 html 链接作为表单按钮
【发布时间】:2009-12-30 05:01:28
【问题描述】:

我有一个登录表单,用户(尚未登录)可以在其中插入他的登录名和密码,填写完这些字段后,用户必须按下提交按钮。

我想要做的是:用一些 css 样式替换 $html->链接的正常提交按钮。

那么有没有我可以使用这样的东西:

<span class = "licitateThis clearfix">
  <?php echo $html->link(__("Sign In", true), array("type" => "Sign In", 'class'=>'licitate')); ?>
</span>

代替:

 echo $form->end(__('Sign In',true));

为小型登录表单创建提交按钮?

我的css代码:

.licitateThis{position:relative;float:left;width:100%;}
.licitateThis a.licitate{display:block;float:left;padding:2px 0 4px;width:100%;background-color:#eee;text-shadow:#fff 1px 1px 1px;text-decoration:none;font-weight:bold;font-size:115%;border:1px solid #fff;border-radius:3px;text-align:center;letter-spacing:-0.02em;text-transform:uppercase;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}
.licitateThis a.licitate:hover,.licitateThis:hover a{background-color:#0071bb;text-shadow:#666 1px 1px 1px;color:#fff;}

PS: 我尝试提交的表单是一个登录表单,它位于 default.ctp,因此可以在每个页面中使用。

问题已解决:

CSS(创建了一个新类):

.loginSubmit {color:#0071bb;outline:none; display:block;float:left;padding:2px 0 4px;width:100%;background-color:#eee;text-shadow:#fff 1px 1px 1px;text-decoration:none;font-weight:bold;font-size:115%;border:1px solid #fff;border-radius:3px;text-align:center;letter-spacing:-0.02em;text-transform:uppercase;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}
.loginSubmit:hover {background-color:#0071bb;text-shadow:#666 1px 1px 1px;color:#fff;}

PHP:

 <button type="submit" class="loginSubmit">Sign In</button>
 <?php echo $form->end(); ?>

谢谢。

【问题讨论】:

    标签: php forms cakephp button


    【解决方案1】:

    你想在这里做什么?为什么需要为提交按钮使用锚点&lt;a&gt; 标签?

    如果您只想让提交按钮看起来像一个链接,那么您可以使用 css 来实现。

    或者,如果您只想将提交按钮放在&lt;/form&gt; 标签旁边以外的其他位置,那么您可以将&lt;button type="submit" class="licitate"&gt;Sign In&lt;/button&gt; 放在表单内的任何位置,然后使用&lt;?php echo $form-&gt;end(); ?&gt; 关闭表单。

    【讨论】:

    • 也可以使用 代替
    • 我有一个名为 citation 的 css 服装,我不想在我的提交按钮上使用它,但我不知道怎么做。 :S
    • 您仍然可以在&lt;button type="submit" class="licitate"&gt;Sign In&lt;/button&gt; 上这样做。你只需要稍微调整一下你的 CSS。尝试删除 CSS 上 a.licitate 上的 a 定义。尽管您需要使用 javascript 而不是 :hover 来实现鼠标悬停效果
    • 那是正确的......我改变了一点 CSS 和它现在的工作,以及悬停(没有 js)。谢谢
    【解决方案2】:

    他的问题是锚标签不能在没有javascript的情况下提交表单。 $html->link 创建一个链接,不是提交的输入类型,也不是提交类型的按钮。

    如果您只想使用一个按钮,请手动为其编写正确的 html。

        ... other form code here
        <button type="submit" class="licitation">
            Sign In
        </button>
        <?php echo $form->end( );
    

    【讨论】:

    • 是的,这就是我的问题,但还有另一个问题: licitate 类用于锚点,它具有正常状态和悬停状态。这是我的 CSS 的摘录:pastebin.com/m4116430 和使用该 CSS 样式的普通链接:pastebin.com/m2f7af7ab
    • 所以,你没有真正的问题。您所拥有的 CSS 知识不足以按照您想要的方式设置按钮元素的样式,并且您希望一些 CSS 可以在它不适合的元素上工作。为什么不搜索一下如何设置按钮元素的样式。一个很好的起点是 blueprintcss.org 的按钮插件 为什么要在锚标记周围环绕跨度?有更清洁和语义更好的方法来做到这一点。即使像将类名放在锚标记上并将链接文本包装在跨度中这样简单的事情也会有所改进。
    【解决方案3】:

    如果我理解你想在你的用户已经登录的情况下尝试的 wuestion 权利吗? 如果是这样,首先创建一个函数来检查用户是否登录。 然后检查一下

    <span class = "licitateThis clearfix">
      <?php if(userisalreadyloggedin())
       echo '<a href="login.php" class ="licitate"> Singin</a>';
      ?>
    </span>
    

    【讨论】:

    • 我有一个登录表单,用户(尚未登录)可以在其中插入他的登录名和密码,填写这些字段后,用户必须按下提交按钮。我想做的是:用一些css样式替换$html->链接的正常提交按钮。
    【解决方案4】:

    是的,但这通常不是一个好主意。你将不得不使用 javascript..

    <a href="#" onclick="document.formName.submit()">
    

    也许用 cakephp

    <?php echo $html->link(__("Sign In", true), array("type" => "Sign In", 'class'=>'licitate', 'onClick' => 'document.formName.submit()')); ?>
    

    【讨论】:

    • 如果我输入:'link(__('Sign In', true), array('type' => 'Sign In', 'class'=> 'licitate', 'onClick' => 'document.UserLoginForm.submit()')); ?>' 生成的 html 是 'Sign In' 但它没有不行。
    • 只是参数不对而已。检查文档中的链接方法。你会想要, echo $html->link(__('Sign In', true), null, array('class'=>'licitate', 'onClick'=>'this.submit();')) ;文档,api.cakephp.org/class/html-helper#method-HtmlHelperlink
    • 您不必使用直接嵌入到链接中的onclick 属性,事实上,这是一种不好的形式。 JavaScript 功能应作为渐进增强附加。
    • 如果我按照你说的方式进行操作,我会收到此错误:“错误:在此服务器上找不到请求的地址 '//Sign In'。”。这个表单我试图提交它的登录表单,一旦它位于 default.ctp,它就可以在每个视图中使用。 :S
    • 如果他使用表单的链接然后逐步增强它没有任何意义,因为没有js的链接无论如何都不会提交表单。渐进式增强是使用 js 来增强某些东西,如果没有它,它已经可以按预期工作。如果功能需要 js 才能工作,这不是渐进式增强。在这种情况下,内联提交处理程序既很好,语义正确,也更容易在标记中发现,作为正常行为规则的例外。
    猜你喜欢
    • 2015-03-17
    • 2020-09-06
    • 2017-05-23
    • 1970-01-01
    • 2019-10-11
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多