2009-12-30 70 views
1

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

我想要做的是:用一些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.thtml中,因此它可以在每一个页面中使用。

问题解决了:

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(); ?> 

感谢。

回答

1

什么是你想在这里做什么?任何您需要为您的提交按钮使用锚点<a>标记的原因?

如果你只想让你的提交按钮看起来像一个链接,那么你可以使用CSS来做到这一点。

或者,如果你只想把你的提交按钮其他以外的</form>标签旁的地方,然后你可以把任何地方<button type="submit" class="licitate">Sign In</button>的形式内,使用<?php echo $form->end(); ?>关闭窗体。

+0

也可以使用而不是

+0

我有一个称为授权的CSS成本分配,我不想在我的提交按钮上使用它,但我不知道如何。 :S – Canastro 2009-12-30 11:20:22

+0

你仍然可以在'''。你只需要调整你的CSS。尝试删除CSS上'a.licitate'定义的'a'。 虽然你将需要使用javascript而不是:悬停的鼠标悬停效果 – jpdelatorre 2009-12-31 02:27:19

-1

是的,但通常不是一个好主意。你将不得不使用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()')); ?> 
+0

如果我说:'<?php echo $ html-> link(__('Sign In',true),array('type'=>'Sign In','class'=>'licitate','onClick'=>'document.UserLoginForm.submit ()')); ''生成的html是'Sign In',它不起作用。 – Canastro 2009-12-30 11:15:31

+0

这些参数都是错的。检查文档中的链接方法。 ('_'('Sign In',true),null,array('class'=>'licitate','onClick'=>'this.submit();}}。 “)); 文档,http://api.cakephp.org/class/html-helper#method-HtmlHelperlink – 2009-12-30 11:25:35

+0

您不必使用直接嵌入到链接中的“onclick”属性,事实上,这是糟糕的形式。 JavaScript功能应附加为渐进式增强功能。 – 2009-12-30 23:59:18

0

他的问题是,一个锚标签无法提交没有javascript的表单。 $ html-> link创建一个链接,而不是提交的输入类型,而不是类型为submit的按钮。

如果您想简单地使用按钮,请手动为其编写CORRECT html。

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

是的,这是我的问题,但有另一个:类合法是一个锚,它有一个正常的状态和悬停状态。这里是我的CSS的摘录:http://pastebin.com/m4116430以及使用该CSS样式的正常链接:http://pastebin.com/m2f7af7ab。 – Canastro 2009-12-30 23:54:09

+0

所以,你没有真正的问题。你有什么是没有足够的知识的CSS风格的按钮元素的方式,你想和你想要的CSS可以在一个元素上工作,它不是为了工作。 为什么不围绕如何设计风格的按钮元素。一个好的起点是来自blueprintcss.org的按钮插件 你为什么要围绕一个锚标签包围一个跨度?有更清洁和更好的语义方法来做到这一点。甚至像将类名放在锚标签上一样简单,并且将链接文本包装在跨度中也是一种改进。 – 2009-12-31 18:27:04

0

如果我明白如果您的用户已经登录,您想尝试的wuestion权利? 如果是这样,首先创建一个函数,检查用户是否登录。 然后检查它

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

我有一个登录表单,用户(尚未登录)可以插入他的登录名和密码,填写完这些字段后,用户必须按提交按钮。 我想要做的是:用一些CSS样式替换$ html->链接的正常提交按钮。 – Canastro 2009-12-31 00:32:06