diff --git a/_test/tests/inc/form_form.test.php b/_test/tests/inc/form_form.test.php
index 02242a807ff64812fee492bf386da13d0e9778d4..7f168b89583cfcabae0222368e971c5d55e881aa 100644
--- a/_test/tests/inc/form_form.test.php
+++ b/_test/tests/inc/form_form.test.php
@@ -30,9 +30,9 @@ class form_test extends DokuWikiTest {
     $realoutput .= '<input type="checkbox" id="check__id" name="r" value="1" /> ';
     $realoutput .= '<span>Check</span></label>';
     $realoutput .= "\n";
-    $realoutput .= '<input name="do[save]" type="submit" value="Save" class="button" accesskey="s" title="Save [S]" />';
+    $realoutput .= '<button name="do[save]" type="submit" accesskey="s" title="Save [S]">Save</button>';
     $realoutput .= "\n";
-    $realoutput .= '<input name="do[cancel]" type="submit" value="Cancel" class="button" />';
+    $realoutput .= '<button name="do[cancel]" type="submit">Cancel</button>';
     $realoutput .= "\n";
     $realoutput .= "</fieldset>\n</div></form>\n";
     return $realoutput;
diff --git a/inc/form.php b/inc/form.php
index 748983281e94d35989caba4bad52b99460ab768e..91a171555c85aa3b686a7042ad201dcdd8774878 100644
--- a/inc/form.php
+++ b/inc/form.php
@@ -400,7 +400,7 @@ function form_makeWikiText($text, $attrs=array()) {
 function form_makeButton($type, $act, $value='', $attrs=array()) {
     if ($value == '') $value = $act;
     $elem = array('_elem'=>'button', 'type'=>$type, '_action'=>$act,
-                        'value'=>$value, 'class'=>'button');
+                        'value'=>$value);
     if (!empty($attrs['accesskey']) && empty($attrs['title'])) {
         $attrs['title'] = $value . ' ['.strtoupper($attrs['accesskey']).']';
     }
@@ -761,7 +761,9 @@ function form_wikitext($attrs) {
  */
 function form_button($attrs) {
     $p = (!empty($attrs['_action'])) ? 'name="do['.$attrs['_action'].']" ' : '';
-    return '<input '.$p.buildAttributes($attrs,true).' />';
+    $value = $attrs['value'];
+    unset($attrs['value']);
+    return '<button '.$p.buildAttributes($attrs,true).'>'.$value.'</button>';
 }
 
 /**
diff --git a/inc/html.php b/inc/html.php
index 2f10e3c082658c0db435af155270584396a9384e..1ccc056def5171cdc2cf36b53e64c3404dd433fa 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -183,7 +183,7 @@ function html_topbtn(){
  * @param bool|string    $label  label text, false: lookup btn_$name in localization
  * @return string
  */
-function html_btn($name,$id,$akey,$params,$method='get',$tooltip='',$label=false){
+function html_btn($name, $id, $akey, $params, $method='get', $tooltip='', $label=false){
     global $conf;
     global $lang;
 
@@ -221,13 +221,15 @@ function html_btn($name,$id,$akey,$params,$method='get',$tooltip='',$label=false
         $tip = htmlspecialchars($label);
     }
 
-    $ret .= '<input type="submit" value="'.hsc($label).'" class="button" ';
+    $ret .= '<button type="submit" ';
     if($akey){
         $tip .= ' ['.strtoupper($akey).']';
         $ret .= 'accesskey="'.$akey.'" ';
     }
     $ret .= 'title="'.$tip.'" ';
     $ret .= '/>';
+    $ret .= hsc($label);
+    $ret .= '</button>';
     $ret .= '</div></form>';
 
     return $ret;
@@ -856,26 +858,28 @@ function html_recent($first=0, $show_changes='both'){
         $first -= $conf['recent'];
         if ($first < 0) $first = 0;
         $form->addElement(form_makeOpenTag('div', array('class' => 'pagenav-prev')));
-        $form->addElement(form_makeTag('input', array(
+        $form->addElement(form_makeOpenTag('button', array(
                     'type'  => 'submit',
                     'name'  => 'first['.$first.']',
-                    'value' => $lang['btn_newer'],
                     'accesskey' => 'n',
                     'title' => $lang['btn_newer'].' [N]',
                     'class' => 'button show'
                     )));
+        $form->addElement($lang['btn_newer']);
+        $form->addElement(form_makeCloseTag('button'));
         $form->addElement(form_makeCloseTag('div'));
     }
     if ($hasNext) {
         $form->addElement(form_makeOpenTag('div', array('class' => 'pagenav-next')));
-        $form->addElement(form_makeTag('input', array(
+        $form->addElement(form_makeOpenTag('button', array(
                         'type'  => 'submit',
                         'name'  => 'first['.$last.']',
-                        'value' => $lang['btn_older'],
                         'accesskey' => 'p',
                         'title' => $lang['btn_older'].' [P]',
                         'class' => 'button show'
                         )));
+        $form->addElement($lang['btn_older']);
+        $form->addElement(form_makeCloseTag('button'));
         $form->addElement(form_makeCloseTag('div'));
     }
     $form->addElement(form_makeCloseTag('div'));
@@ -1005,7 +1009,7 @@ function html_li_default($item){
  * @param callable $func  callback to print an list item
  * @param callable $lifunc callback to the opening li tag
  * @param bool     $forcewrapper Trigger building a wrapper ul if the first level is
-                                 0 (we have a root object) or 1 (just the root content)
+ *                               0 (we have a root object) or 1 (just the root content)
  * @return string html of an unordered list
  */
 function html_buildlist($data,$class,$func,$lifunc='html_li_default',$forcewrapper=false){
diff --git a/inc/template.php b/inc/template.php
index 95dc52deb5cdd46e8703b835f6605db4b0ca9429..c7dea6b46d73aa42537289a63a536f0eb6a1aeab 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -834,7 +834,7 @@ function tpl_searchform($ajax = true, $autocomplete = true) {
     print 'placeholder="'.$lang['btn_search'].'" ';
     if(!$autocomplete) print 'autocomplete="off" ';
     print 'id="qsearch__in" accesskey="f" name="id" class="edit" title="[F]" />';
-    print '<input type="submit" value="'.$lang['btn_search'].'" class="button" title="'.$lang['btn_search'].'" />';
+    print '<button type="submit" title="'.$lang['btn_search'].'">'.$lang['btn_search'].'</button>';
     if($ajax) print '<div id="qsearch__out" class="ajax_qsearch JSpopup"></div>';
     print '</div></form>';
     return true;
@@ -1613,6 +1613,12 @@ function tpl_actiondropdown($empty = '', $button = '&gt;') {
     /** @var Input $INPUT */
     global $INPUT;
 
+    $action_structure = array(
+        'page_tools' => array('edit', 'revert', 'revisions', 'backlink', 'subscribe'),
+        'site_tools' => array('recent', 'media', 'index'),
+        'user_tools' => array('login', 'register', 'profile', 'admin'),
+    );
+
     echo '<form action="'.script().'" method="get" accept-charset="utf-8">';
     echo '<div class="no">';
     echo '<input type="hidden" name="id" value="'.$ID.'" />';
@@ -1624,50 +1630,17 @@ function tpl_actiondropdown($empty = '', $button = '&gt;') {
     echo '<select name="do" class="edit quickselect" title="'.$lang['tools'].'">';
     echo '<option value="">'.$empty.'</option>';
 
-    echo '<optgroup label="'.$lang['page_tools'].'">';
-    $act = tpl_get_action('edit');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('revert');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('revisions');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('backlink');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('subscribe');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-    echo '</optgroup>';
-
-    echo '<optgroup label="'.$lang['site_tools'].'">';
-    $act = tpl_get_action('recent');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('media');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('index');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-    echo '</optgroup>';
-
-    echo '<optgroup label="'.$lang['user_tools'].'">';
-    $act = tpl_get_action('login');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('register');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('profile');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-
-    $act = tpl_get_action('admin');
-    if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
-    echo '</optgroup>';
+    foreach($action_structure as $tools => $actions) {
+        echo '<optgroup label="'.$lang[$tools].'">';
+        foreach($actions as $action) {
+            $act = tpl_get_action($action);
+            if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
+        }
+        echo '</optgroup>';
+    }
 
     echo '</select>';
-    echo '<input type="submit" value="'.$button.'" />';
+    echo '<button type="submit">'.$button.'</button>';
     echo '</div>';
     echo '</form>';
 }
diff --git a/install.php b/install.php
index 1a2d03dff8372a56efb5e804fa09ff05a87e518d..4de8093d6ba670ebd09ed0fb4d9a5e4b6c6d27df 100644
--- a/install.php
+++ b/install.php
@@ -243,7 +243,7 @@ function print_form($d){
 
     </fieldset>
     <fieldset id="process">
-        <input class="button" type="submit" name="submit" value="<?php echo $lang['btn_save']?>" />
+        <button type="submit" name="submit"><?php echo $lang['btn_save']?></button>
     </fieldset>
     </form>
     <?php
@@ -256,7 +256,7 @@ function print_retry() {
     <form action="" method="get">
       <fieldset>
         <input type="hidden" name="l" value="<?php echo $LC ?>" />
-        <input class="button" type="submit" value="<?php echo $lang['i_retry'];?>" />
+        <button type="submit"><?php echo $lang['i_retry'];?></button>
       </fieldset>
     </form>
     <?php
@@ -619,7 +619,7 @@ function langsel(){
         echo '<option value="'.$l.'" '.$sel.'>'.$l.'</option>';
     }
     echo '</select> ';
-    echo '<input type="submit" value="'.$lang['btn_update'].'" />';
+    echo '<button type="submit">'.$lang['btn_update'].'</button>';
     echo '</form>';
 }
 
diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php
index 814bbfe9c44ff27524cad7b2e6c87c43c5d1b63f..3742057698e9613135449ea76dad649e91829764 100644
--- a/lib/plugins/acl/admin.php
+++ b/lib/plugins/acl/admin.php
@@ -332,7 +332,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
         echo $this->getLang('acl_perms').' ';
         $inl =  $this->_html_select();
         echo '<input type="text" name="acl_w" class="edit" value="'.(($inl)?'':hsc(ltrim($this->who,'@'))).'" />'.NL;
-        echo '<input type="submit" value="'.$this->getLang('btn_select').'" class="button" />'.NL;
+        echo '<button type="submit">'.$this->getLang('btn_select').'</button>'.NL;
         echo '</div>'.NL;
 
         echo '<div id="acl__info">';
@@ -391,10 +391,10 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
         echo $this->_html_checkboxes($current,empty($this->ns),'acl');
 
         if(is_null($current)){
-            echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_save'].'" />'.NL;
+            echo '<button type="submit" name="cmd[save]">'.$lang['btn_save'].'</button>'.NL;
         }else{
-            echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_update'].'" />'.NL;
-            echo '<input type="submit" name="cmd[del]" class="button" value="'.$lang['btn_delete'].'" />'.NL;
+            echo '<button type="submit" name="cmd[save]">'.$lang['btn_update'].'</button>'.NL;
+            echo '<button type="submit" name="cmd[del]">'.$lang['btn_delete'].'</button>'.NL;
         }
 
         echo '</fieldset>';
@@ -641,7 +641,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
 
         echo '<tr>';
         echo '<th class="action" colspan="4">';
-        echo '<input type="submit" value="'.$lang['btn_update'].'" name="cmd[update]" class="button" />';
+        echo '<button type="submit" name="cmd[update]">'.$lang['btn_update'].'</button>';
         echo '</th>';
         echo '</tr>';
         echo '</table>';
diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js
index 58598b1e04d382cd395194007d93b3e0e248b875..86badffdd66f746a3930793ad3e9b6f826b21cd5 100644
--- a/lib/plugins/acl/script.js
+++ b/lib/plugins/acl/script.js
@@ -16,7 +16,7 @@ var dw_acl = {
         }
 
         jQuery('#acl__user select').change(dw_acl.userselhandler);
-        jQuery('#acl__user input[type=submit]').click(dw_acl.loadinfo);
+        jQuery('#acl__user button').click(dw_acl.loadinfo);
 
         $tree = jQuery('#acl__tree');
         $tree.dw_tree({toggle_selector: 'img',
diff --git a/lib/plugins/config/admin.php b/lib/plugins/config/admin.php
index 2ef570b682c0738880d19cc737818446af5ef53f..ec8ee0b842bf566a635754c554b86cb969383cec 100644
--- a/lib/plugins/config/admin.php
+++ b/lib/plugins/config/admin.php
@@ -212,8 +212,8 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
 
         if (!$this->_config->locked) {
             ptln('  <input type="hidden" name="save"   value="1" />');
-            ptln('  <input type="submit" name="submit" class="button" value="'.$lang['btn_save'].'" accesskey="s" />');
-            ptln('  <input type="reset" class="button" value="'.$lang['btn_reset'].'" />');
+            ptln('  <button type="submit" name="submit" accesskey="s">'.$lang['btn_save'].'</button>');
+            ptln('  <button type="reset">'.$lang['btn_reset'].'</button>');
         }
 
         ptln('</p>');
diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php
index 11aea1d0ebb3e3728b8ed7432abe051a4c144a63..bf099d3082261534fcd52cbcce1661fbf4ec7e39 100644
--- a/lib/plugins/extension/helper/list.php
+++ b/lib/plugins/extension/helper/list.php
@@ -535,7 +535,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
         $classes = 'button '.$action;
         $name    = 'fn['.$action.']['.hsc($extension->getID()).']';
 
-        return '<input class="'.$classes.'" name="'.$name.'" type="submit" value="'.$this->getLang('btn_'.$action).'" '.$title.' />';
+        return '<button class="'.$classes.'" name="'.$name.'" type="submit" '.$title.'>'.$this->getLang('btn_'.$action).'</button> ';
     }
 
     /**
diff --git a/lib/plugins/extension/script.js b/lib/plugins/extension/script.js
index c74c44ad1d59ee4344a275ae2527e6aa8a2577fb..0c43de6ae97403f85f9cffb759ee84040751d734 100644
--- a/lib/plugins/extension/script.js
+++ b/lib/plugins/extension/script.js
@@ -5,7 +5,7 @@ jQuery(function(){
     /**
      * Confirm uninstalling
      */
-    $extmgr.find('input.uninstall').click(function(e){
+    $extmgr.find('button.uninstall').click(function(e){
         if(!window.confirm(LANG.plugins.extension.reallydel)){
             e.preventDefault();
             return false;
@@ -46,7 +46,7 @@ jQuery(function(){
     /**
      * Enable/Disable extension via AJAX
      */
-    $extmgr.find('input.disable, input.enable').click(function (e) {
+    $extmgr.find('button.disable, button.enable').click(function (e) {
         e.preventDefault();
         var $btn = jQuery(this);
 
diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less
index 86e540b0fcf9ee799ca3988d629301e78268f478..c400d649a29f01358bfc89cdb7ee5f28a3d61961 100644
--- a/lib/plugins/extension/style.less
+++ b/lib/plugins/extension/style.less
@@ -80,8 +80,8 @@
         overflow: hidden;
     }
 
-    input.button {
-        margin: 0 .3em .3em 0;
+    button {
+        margin-bottom: .3em;
     }
 }
 
diff --git a/lib/plugins/popularity/admin.php b/lib/plugins/popularity/admin.php
index a2c3c6c8bc35616e275a091740d145d1ef6416a7..0cf174e0de7c20d8b197e4e240241b36bf0940e1 100644
--- a/lib/plugins/popularity/admin.php
+++ b/lib/plugins/popularity/admin.php
@@ -144,7 +144,7 @@ class admin_plugin_popularity extends DokuWiki_Admin_Plugin {
                 .'<input type="hidden" name="do" value="admin" />'
                 .'<input type="hidden" name="page" value="popularity" />';
         }
-        $form .= '<input type="submit" class="button" value="'.$this->getLang('submit').'"/>'
+        $form .= '<button type="submit">'.$this->getLang('submit').'</button>'
             .'</fieldset>'
             .'</form>';
         return $form;
diff --git a/lib/plugins/revert/admin.php b/lib/plugins/revert/admin.php
index b61615d0050a4b8c3fd007067b29f3e38a1056df..1a03005857b815854247979b4d02e510ecf3851a 100644
--- a/lib/plugins/revert/admin.php
+++ b/lib/plugins/revert/admin.php
@@ -64,9 +64,9 @@ class admin_plugin_revert extends DokuWiki_Admin_Plugin {
         global $lang, $INPUT;
         echo '<form action="" method="post"><div class="no">';
         echo '<label>'.$this->getLang('filter').': </label>';
-        echo '<input type="text" name="filter" class="edit" value="'.hsc($INPUT->str('filter')).'" />';
-        echo ' <input type="submit" class="button" value="'.$lang['btn_search'].'" />';
-        echo ' <span>'.$this->getLang('note1').'</span>';
+        echo '<input type="text" name="filter" class="edit" value="'.hsc($INPUT->str('filter')).'" /> ';
+        echo '<button type="submit">'.$lang['btn_search'].'</button> ';
+        echo '<span>'.$this->getLang('note1').'</span>';
         echo '</div></form><br /><br />';
     }
 
@@ -173,7 +173,7 @@ class admin_plugin_revert extends DokuWiki_Admin_Plugin {
         echo '</ul>';
 
         echo '<p>';
-        echo '<input type="submit" class="button" value="'.$this->getLang('revert').'" /> ';
+        echo '<button type="submit">'.$this->getLang('revert').'</button> ';
         printf($this->getLang('note2'),hsc($filter));
         echo '</p>';
 
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index 0d92e5cc19f781eff52c41bdc85768c9389c54ec..86823ee2f15af1045ff237541f7a8259892b9ce0 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -241,18 +241,18 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         ptln("    <tbody>");
         ptln("      <tr><td colspan=\"5\" class=\"centeralign\">");
         ptln("        <span class=\"medialeft\">");
-        ptln("          <input type=\"submit\" name=\"fn[delete]\" ".$delete_disable." class=\"button\" value=\"".$this->lang['delete_selected']."\" id=\"usrmgr__del\" />");
-        ptln("        </span>");
+        ptln("          <button type=\"submit\" name=\"fn[delete]\" id=\"usrmgr__del\" ".$delete_disable.">".$this->lang['delete_selected']."</button>");
+        ptln("        ");
         ptln("        <span class=\"mediaright\">");
-        ptln("          <input type=\"submit\" name=\"fn[start]\" ".$page_buttons['start']." class=\"button\" value=\"".$this->lang['start']."\" />");
-        ptln("          <input type=\"submit\" name=\"fn[prev]\" ".$page_buttons['prev']." class=\"button\" value=\"".$this->lang['prev']."\" />");
-        ptln("          <input type=\"submit\" name=\"fn[next]\" ".$page_buttons['next']." class=\"button\" value=\"".$this->lang['next']."\" />");
-        ptln("          <input type=\"submit\" name=\"fn[last]\" ".$page_buttons['last']." class=\"button\" value=\"".$this->lang['last']."\" />");
+        ptln("          <button type=\"submit\" name=\"fn[start]\" ".$page_buttons['start'].">".$this->lang['start']."</button>");
+        ptln("          <button type=\"submit\" name=\"fn[prev]\" ".$page_buttons['prev'].">".$this->lang['prev']."</button>");
+        ptln("          <button type=\"submit\" name=\"fn[next]\" ".$page_buttons['next'].">".$this->lang['next']."</button>");
+        ptln("          <button type=\"submit\" name=\"fn[last]\" ".$page_buttons['last'].">".$this->lang['last']."</button>");
         ptln("        </span>");
         if (!empty($this->_filter)) {
-            ptln("    <input type=\"submit\" name=\"fn[search][clear]\" class=\"button\" value=\"".$this->lang['clear']."\" />");
+            ptln("    <button type=\"submit\" name=\"fn[search][clear]\">".$this->lang['clear']."</button>");
         }
-        ptln("        <input type=\"submit\" name=\"fn[export]\" class=\"button\" value=\"".$export_label."\" />");
+        ptln("        <button type=\"submit\" name=\"fn[export]\">".$export_label."</button>");
         ptln("        <input type=\"hidden\" name=\"do\"    value=\"admin\" />");
         ptln("        <input type=\"hidden\" name=\"page\"  value=\"usermanager\" />");
 
@@ -360,7 +360,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
 
         $this->_htmlFilterSettings($indent+10);
 
-        ptln("          <input type=\"submit\" name=\"fn[".$cmd."]\" class=\"button\" value=\"".$this->lang[$cmd]."\" />",$indent);
+        ptln("          <button type=\"submit\" name=\"fn[".$cmd."]\">".$this->lang[$cmd]."</button>",$indent);
         ptln("        </td>",$indent);
         ptln("      </tr>",$indent);
         ptln("    </tbody>",$indent);
@@ -369,7 +369,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         if ($notes) {
             ptln("    <ul class=\"notes\">");
             foreach ($notes as $note) {
-                ptln("      <li><span class=\"li\">".$note."</span></li>",$indent);
+                ptln("      <li><span class=\"li\">".$note."</li>",$indent);
             }
             ptln("    </ul>");
         }
@@ -456,7 +456,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         ptln('  <form action="'.wl($ID).'" method="post" enctype="multipart/form-data">',$indent);
         formSecurityToken();
         ptln('    <label>'.$this->lang['import_userlistcsv'].'<input type="file" name="import" /></label>',$indent);
-        ptln('    <input type="submit" name="fn[import]" value="'.$this->lang['import'].'" />',$indent);
+        ptln('    <button type="submit" name="fn[import]">'.$this->lang['import'].'</button>',$indent);
         ptln('    <input type="hidden" name="do"    value="admin" />',$indent);
         ptln('    <input type="hidden" name="page"  value="usermanager" />',$indent);
 
diff --git a/lib/plugins/usermanager/style.css b/lib/plugins/usermanager/style.css
index d119b195a0475eb0cadb7143436f4cd9ec7f71d8..9028fed5eb58d0e66cd866864c50943d83c27442 100644
--- a/lib/plugins/usermanager/style.css
+++ b/lib/plugins/usermanager/style.css
@@ -17,7 +17,7 @@
   padding-left: 0;
   padding-right: 1.4em;
 }
-#user__manager input.button[disabled] {
+#user__manager button[disabled] {
   color: #ccc!important;
   border-color: #ccc!important;
 }
diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
index fb61f6e48b4de063787f30c10ab9affbe18a5759..97955dad994d7641956b87901a8d32d416909aae 100644
--- a/lib/scripts/behaviour.js
+++ b/lib/scripts/behaviour.js
@@ -107,7 +107,7 @@ var dw_behaviour = {
     quickSelect: function(){
         jQuery('select.quickselect')
             .change(function(e){ e.target.form.submit(); })
-            .closest('form').find('input[type=submit]').not('.show').hide();
+            .closest('form').find(':button').not('.show').hide();
     },
 
     /**
@@ -171,10 +171,10 @@ var dw_behaviour = {
 
         if($checked.length < 2){
             $all.attr('disabled',false);
-            jQuery('#page__revisions input[type=submit]').attr('disabled',true);
+            jQuery('#page__revisions button').attr('disabled',true);
         }else{
             $all.attr('disabled',true);
-            jQuery('#page__revisions input[type=submit]').attr('disabled',false);
+            jQuery('#page__revisions button').attr('disabled',false);
             for(var i=0; i<$checked.length; i++){
                 $checked[i].disabled = false;
                 if(i>1){
diff --git a/lib/scripts/editor.js b/lib/scripts/editor.js
index f4143f0bc20a9edd9cb53bddb23af6bf81ac4397..fac084489246a7dc73987e5c360f5d82701fc79c 100644
--- a/lib/scripts/editor.js
+++ b/lib/scripts/editor.js
@@ -146,7 +146,7 @@ var dw_editor = {
 
         if((e.keyCode == 13 || e.keyCode == 10) && e.ctrlKey) { // Ctrl-Enter (With Chrome workaround)
             // Submit current edit
-            jQuery('input#edbtn__save').click();
+            jQuery('#edbtn__save').click();
             e.preventDefault(); // prevent enter key
             return false;
         }else if(e.keyCode == 13){ // Enter
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index f5786c387dbcb9a5c55f8f7b428c32cbf5e7737a..d6a82397d7e5a6c2e705123775f95e1d689130f3 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -82,7 +82,7 @@ qq.FileUploaderExtended = function(o){
             '<div class="qq-upload-button">' + LANG.media_select + '</div>' +
             '<ul class="qq-upload-list"></ul>' +
             '<div class="qq-action-container">' +
-            '  <input class="qq-upload-action button" type="submit" value="' + LANG.media_upload_btn + '" id="mediamanager__upload_button">' +
+            '  <button class="qq-upload-action" type="submit" id="mediamanager__upload_button">' + LANG.media_upload_btn + '</button>' +
             '  <label class="qq-overwrite-check"><input type="checkbox" value="1" name="ow" class="dw__ow"> <span>' + LANG.media_overwrt + '</span></label>' +
             '</div>' +
             '</div>',
@@ -189,7 +189,7 @@ qq.extend(qq.FileUploaderExtended.prototype, {
             var button = '<form method="post" action="' + action + '" id="mediamanager__done_form"><div>';
             button += '<input type="hidden" value="' + result.ns + '" name="ns">';
             button += '<input type="hidden" value="1" name="recent">';
-            button += '<input class="button" type="submit" value="' + LANG.media_done_btn + '"></div></form>';
+            button += '<button type="submit">' + LANG.media_done_btn + '</button></div></form>';
             jQuery('#mediamanager__uploader').append(button);
         }
     }
diff --git a/lib/scripts/hotkeys.js b/lib/scripts/hotkeys.js
index bff28530d240d70bba0c34d1b8974d4344e4bcd8..76a277aea2ad6b09e7d2850def2b16678b58d90d 100644
--- a/lib/scripts/hotkeys.js
+++ b/lib/scripts/hotkeys.js
@@ -26,7 +26,7 @@ function Hotkeys() {
      * Initialization
      *
      * This function looks up all the accesskeys used in the current page
-     * (at anchor elements and input elements [type="submit"]) and registers
+     * (at anchor elements and button elements [type="submit"]) and registers
      * appropriate shortcuts.
      *
      * Secondly, initialization registers listeners on document to catch all
@@ -59,10 +59,10 @@ function Hotkeys() {
         });
 
         /**
-         * Lookup all input [type="submit"] with accesskey and register event -
+         * Lookup all button [type="submit"] with accesskey and register event -
          * perform "click" on a button.
          */
-        var inputs = document.getElementsByTagName("input");
+        var inputs = document.getElementsByTagName("button");
         t.each(inputs, function(i) {
             if (i.type == "submit" && i.accessKey != "") {
                 t.addShortcut(t.modifier + '+' + i.accessKey, function() {
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 8ca21ecabccfd26e2c88f6d3a4fe4e2aad123dac..2995addfd0f41d335d2831a9c775e9f7e91afa3b 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -119,7 +119,7 @@ var dw_mediamanager = {
         $both = $listType.add($sortBy);
 
         // Remove the submit button
-        $options.find('input[type=submit]').parent().hide();
+        $options.find('button[type=submit]').parent().hide();
 
         // Prepare HTML for jQuery UI buttonset
         $both.find('label').each(function () {
@@ -435,7 +435,7 @@ var dw_mediamanager = {
                 dw_mediamanager.$resizables().resizable('destroy');
 
                 if (update_list) {
-                    dw_mediamanager.list.call(jQuery('#mediamanager__page form.options input[type="submit"]')[0]);
+                    dw_mediamanager.list.call(jQuery('#mediamanager__page form.options button[type="submit"]')[0]);
                 }
 
                 $content.html(data);
diff --git a/lib/tpl/dokuwiki/css/_edit.css b/lib/tpl/dokuwiki/css/_edit.css
index f40aaa89199e383750a30872e97a8884e397743e..d6dcb93ab1152381ceb54f98e6ea19a198f82071 100644
--- a/lib/tpl/dokuwiki/css/_edit.css
+++ b/lib/tpl/dokuwiki/css/_edit.css
@@ -88,7 +88,7 @@ div.picker button.toolbutton {
     margin-right: 0;
     margin-left: 1em;
 }
-.dokuwiki .editBar .editButtons input {
+.dokuwiki .editBar .editButtons button {
 }
 
 /* summary input and minor changes checkbox */
@@ -130,7 +130,7 @@ div.picker button.toolbutton {
 [dir=rtl] .dokuwiki .secedit {
     float: left;
 }
-.dokuwiki .secedit input.button {
+.dokuwiki .secedit button {
     font-size: 75%;
 }
 
diff --git a/lib/tpl/dokuwiki/css/_forms.css b/lib/tpl/dokuwiki/css/_forms.css
index 522f9ed4d0596cca570b4e14036bd9f8ff16f677..bf70fa24b92392ecf7dac6f9c9e923a5c5d44d22 100644
--- a/lib/tpl/dokuwiki/css/_forms.css
+++ b/lib/tpl/dokuwiki/css/_forms.css
@@ -62,8 +62,7 @@
 }
 
 
-.dokuwiki input.button,
-.dokuwiki button.button {
+.dokuwiki button {
     vertical-align: middle;
 }
 /**
diff --git a/lib/tpl/dokuwiki/css/_media_fullscreen.css b/lib/tpl/dokuwiki/css/_media_fullscreen.css
index 31b71897bf138ba29d4fe28448c767cfd3fc8c41..71308ec856d7bf38ccf38450f8899c79ca652c5f 100644
--- a/lib/tpl/dokuwiki/css/_media_fullscreen.css
+++ b/lib/tpl/dokuwiki/css/_media_fullscreen.css
@@ -394,7 +394,7 @@
     width: 50%;
 }
 
-#mediamanager__page form.meta input.button {
+#mediamanager__page form.meta button {
     width: auto;
 }
 
diff --git a/lib/tpl/dokuwiki/css/_media_popup.css b/lib/tpl/dokuwiki/css/_media_popup.css
index 20d669c1484f87acab965f1ca659e726da9b67d2..af536489c6e4fcb11e55a9beaaf714471a732172 100644
--- a/lib/tpl/dokuwiki/css/_media_popup.css
+++ b/lib/tpl/dokuwiki/css/_media_popup.css
@@ -204,7 +204,7 @@ html.popup {
 }
 #dw__mediasearch input.edit {
 }
-#dw__mediasearch input.button {
+#dw__mediasearch button {
 }
 
 
diff --git a/lib/tpl/dokuwiki/css/_modal.css b/lib/tpl/dokuwiki/css/_modal.css
index a46dff30e0370555b919bcd3e696c15feeb51264..37f64830ff10c8c870076661004e402abc38844f 100644
--- a/lib/tpl/dokuwiki/css/_modal.css
+++ b/lib/tpl/dokuwiki/css/_modal.css
@@ -88,7 +88,7 @@
     cursor: default;
 }
 
-#media__popup_content .button {
+#media__popup_content button {
     margin-right: 1px;
     cursor: pointer;
 }
diff --git a/lib/tpl/dokuwiki/css/design.less b/lib/tpl/dokuwiki/css/design.less
index 548ba72285a182bdb8a894d6d404a256f07c7943..ed643fb25ea4403751b7e8de9c520e451afd591e 100644
--- a/lib/tpl/dokuwiki/css/design.less
+++ b/lib/tpl/dokuwiki/css/design.less
@@ -207,12 +207,12 @@ form.search {
     position: relative;
     margin-bottom: 0.5em;
 
-    input.edit {
+    input {
         width: 18em;
         padding: .35em 22px .35em .1em;
     }
 
-    input.button {
+    button {
         background: transparent url(images/search.png) no-repeat 0 0;
         border-width: 0;
         width: 19px;
@@ -225,11 +225,11 @@ form.search {
 }
 
 [dir=rtl] form.search {
-    input.edit {
+    input {
         padding: .35em .1em .35em 22px;
     }
 
-    input.button {
+    button {
         background-position: 5px 0;
         margin-left: 0;
         margin-right: -20px;
diff --git a/lib/tpl/dokuwiki/css/mobile.less b/lib/tpl/dokuwiki/css/mobile.less
index e5e13e2215f1c01fede95acfae40f2d717d8bc52..a52c723ca993530f9bd89ac8a1c5d45506fc3cb0 100644
--- a/lib/tpl/dokuwiki/css/mobile.less
+++ b/lib/tpl/dokuwiki/css/mobile.less
@@ -237,7 +237,7 @@ body {
     margin: 0 0 .2em .2em;
 }
 
-#dokuwiki__sitetools form.search input.edit {
+#dokuwiki__sitetools form.search input {
     width: 100% !important;
 }
 .dokuwiki form.search div.ajax_qsearch {
@@ -261,7 +261,7 @@ body {
 }
 
 /* force same height on search input and tools select */
-#dokuwiki__sitetools form.search input.edit,
+#dokuwiki__sitetools form.search input,
 #dokuwiki__header .mobileTools select {
     height: 2.1em;
     line-height: 2.1em;