2009-12-30 58 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