當我按下某些內容上的刪除按鈕時,我被帶到確認頁面。刪除選項是一個按鈕,而取消選項是一個鏈接。這看起來很奇怪。我發現在drupal中有一個form_confirm()函數,但我無法理解如何使用它。有誰知道如何使取消鏈接到一個按鈕?Drupal - 使確認頁面上的取消鏈接一個按鈕
1
A
回答
0
或使用本不需要JavaScript(和更換用的preg_match()eregi()...
if ($form['#theme'] == 'confirm_form') {
$no = $form['actions']['cancel']['#value'];
if (!is_null($no)) {
// Get the text to put on the cancel button
$value = preg_replace('/(<\/?)(\w+)([^>]*>)/e', '', $no);
preg_match('/href\s*=\s*\"([^\"]+)\"/', $no, $href);
$form['actions']['cancel']['#value'] = '';
$form['href']=array(
'#type'=>'value',
'#value'=>$href[1],
);
// Add our own button
$form['actions']['docancel'] = array(
'#type' => 'submit',
'#name' => 'cancel',
'#submit' => array('mymodule_confirm_form_cancel'),
'#value' => $value,
);
}
}
和
function mymodule_confirm_form_cancel(&$form,&$form_state) {
$href=$form['href']['#value'];
if (!is_null($href)) {
$form['#redirect']=$href;
}
}
2
原因取消鏈接看起來像一個鏈接,因爲它是一個鏈接<a>
,而確認按鈕,是一個表單提交元素<input type="submut>
。
如果你想取消鏈接,看起來像一個提交按鈕,你可以用純CSS做到這一點。
1
使用hook_form_alter(),試試這個:
if($form['#theme'] == 'confirm_form') {
$no = $form['actions']['cancel']['#value'];
if (!is_null($no)) {
// Get the text to put on the cancel button
$value = preg_replace('/(<\/?)(\w+)([^>]*>)/e', '', $no);
eregi('m|href\s*=\s*\"([^\"]+)\"|ig', $no, $href);
$form['actions']['cancel']['#value'] = '';
// Add our own button
$form['actions']['docancel'] = array(
'#type' => 'button',
'#button_type' => 'reset',
'#name' => 'cancel',
'#submit' => 'false',
'#value' => $value,
'#attributes' => array(
'onclick' => '$(this).parents("form").attr("allowSubmission", "false");window.location = "'.$href[1].'";',
),
);
// Prevent the form submission via our button
$form['#attributes']['onsubmit'] = 'if ($(this).attr("allowSubmission") == "false") return false;';
}
}
0
對於Drupal 7我使用:
/**
* Implements hook_form_alter().
*/
function yourmodule_form_alter(&$form, $form_state, $form_id) {
// Change 'cancel' link to 'cancel' button.
if ($form['#theme'] == 'confirm_form') {
if ($form['actions']['cancel']['#type'] == 'link') {
$title = $form['actions']['cancel']['#title'];
$href = $form['actions']['cancel']['#href'];
if (!is_null($title) and !is_null($href)) {
// Disable Cancel link.
$form['actions']['cancel']['#title'] = '';
// Add our own Cancel button.
$form['actions']['docancel'] = array(
'#type' => 'submit',
'#name' => 'cancel',
'#submit' => array('yourmodule_confirm_form_cancel'),
'#value' => $title,
);
}
}
}
}
/**
* Redirect to previous page after confirm form cancel().
*/
function yourmodule_confirm_form_cancel(&$form, &$form_state) {
$href = $form['actions']['cancel']['#href'];
if (!is_null($href)) {
$form_state['redirect'] = $href;
}
}
Drupal 8的問題也有報道,但Drupal核心團隊無意解決核心問題。請參閱Drupal支持請求Change confirmation form Cancel link to a button。
最好的問候, 巴索。
相關問題
- 1. 取消按鈕無法確認畫面
- 2. 多取消鏈接不正確在Drupal
- 3. AngularJS:使用一個按鈕鏈接到使用上的按鈕
- 4. 鏈接單個頁面上的多個按鈕
- 5. 如何使用按鈕鏈接另一個頁面?
- 6. 如何使用引導鏈接按鈕到另一個頁面
- 7. 鏈接按鈕到上一頁
- 8. 創建確認消息時,刪除按鈕的頁面
- 9. 如何定位頁面上的每個鏈接和按鈕?
- 10. 腓取消鏈接按鈕爲每個鏈接
- 11. 按鈕鏈接到WordPress的頁面
- 12. 如何用一個按鈕鏈接兩個HTML頁面?
- 13. gridview選擇按鈕是一個頁面的鏈接
- 14. 將更多按鈕鏈接到另一個頁面的編號
- 15. codeigniter獲取上一頁和下一個博客頁面鏈接
- 16. 確認取消按鈕上的對話框發佈?
- 17. 從頁面上的按鈕上刮下鏈接
- 18. 鏈接按鈕到XML頁面
- 19. 按鈕沒有鏈接到另一個頁面?
- 20. 彈出頁面,當點擊一個鏈接按鈕時
- 21. Twitter Bootstrap按鈕 - 如何鏈接到另一個頁面?
- 22. Drupal上一個和下一個鏈接
- 23. 如何在同一頁面上放置多個充當鏈接的html按鈕?
- 24. 如何在點擊鏈接後在另一個頁面上確認框,工作?
- 25. 將一個按鈕鏈接到另一個頁面的一部分
- 26. 超鏈接一個按鈕
- 27. 在按鈕上刷新一個頁面
- 28. 上一頁/下一頁導航鏈接按鈕
- 29. 將wp_links_pages鏈接到「下一頁」和「上一頁」按鈕?
- 30. 鏈接外面的按鈕
在Safari(和Chrome?)中,使用'-webkit-appearance:push-button'就很簡單。 – 2010-08-15 20:45:06
我一直在環顧四周,但無法找到正確的CSS代碼。我發現的只是如何製作時尚的按鈕,但我只想要一個普通的系統按鈕。 – Toxid 2010-08-16 21:41:37