diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc
index 1f3c4f7..4fda8f3 100644
--- a/modules/menu/menu.admin.inc
+++ b/modules/menu/menu.admin.inc
@@ -296,6 +296,9 @@ function menu_edit_item($form, &$form_state, $type, $item, $menu) {
       '#access' => $item['mlid'],
       '#submit' => array('menu_item_delete_submit'),
       '#weight' => 10,
+      // Keep array('mlid') for passing mlid of the
+      // menu link item to delete confirmation form.
+      '#limit_validation_errors' => array(array('mlid')),
     );
   }
   else {
@@ -476,6 +479,9 @@ function menu_edit_menu($form, &$form_state, $type, $menu = array()) {
     '#value' => t('Delete'),
     '#access' => $type == 'edit' && !isset($system_menus[$menu['menu_name']]),
     '#submit' => array('menu_custom_delete_submit'),
+    // Keep array('menu_name') for passing menu_name of the
+    // menu item to delete confirmation form.
+    '#limit_validation_errors' => array(array('menu_name')),
   );
 
   return $form;
diff --git a/modules/menu/menu.test b/modules/menu/menu.test
index 6c11da6..7005625 100644
--- a/modules/menu/menu.test
+++ b/modules/menu/menu.test
@@ -60,6 +60,24 @@ class MenuTestCase extends DrupalWebTestCase {
     // Delete custom menu.
     $this->deleteCustomMenu($this->menu);
 
+    // Delete menu submitting empty title on edit form.
+    // Check if validation permits to do this.
+    $menu_name = substr(hash('sha256', $this->randomName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI);
+    $title = $this->randomName(16);
+
+    $menu = array(
+      'menu_name' => $menu_name,
+      'title' => $title,
+      'description' => 'Description text',
+    );
+    menu_save($menu);
+    $edit = array(
+      'title' => '',
+    );
+
+    $this->drupalPost('admin/structure/menu/manage/' . $menu_name . '/edit', $edit, t('Delete'));
+    $this->assertNoText(t('Title field is required.'), t('Delete menu on edit form with empty title.'));
+
     // Modify and reset a standard menu link.
     $item = $this->getStandardMenuLink();
     $old_title = $item['link_title'];
@@ -72,6 +90,35 @@ class MenuTestCase extends DrupalWebTestCase {
     $saved_item = menu_link_load($item['mlid']);
     $this->assertEqual($description, $saved_item['options']['attributes']['title'], t('Saving an existing link updates the description (title attribute)'));
     $this->resetMenuLink($item, $old_title);
+
+    // Delete link submitting empty title or path on edit form.
+    // Check if validation permits to do this.
+    // Login the user.
+    $this->drupalLogin($this->big_user);
+    // Create custom link <front> to User menu.
+    $link_title = $this->randomName();
+    $edit = array(
+      'link_title' => $link_title,
+      'link_path'  => '<front>',
+    );
+    $this->drupalPost('admin/structure/menu/manage/user-menu/add', $edit, t('Save'));
+    // Select mlid of new created menu item.
+    $mlid = db_query("SELECT mlid FROM {menu_links} WHERE link_title = :link_title", array(':link_titl    e' => $link_title))->fetchField();
+    // Submit edit form with empty title.
+    $edit = array(
+      'link_title' => '',
+      'link_path'  => '<front>',
+    );
+    $this->drupalPost('admin/structure/menu/item/' . $mlid . '/edit', $edit, t('Delete'));
+    $this->assertNoText(t('Menu link title field is required.'), t('Delete link on edit form with empt    y title.'));
+
+    // Submit edit form with empty path.
+    $edit = array(
+      'link_title' => $link_title,
+      'link_path'  => '',
+    );
+    $this->drupalPost('admin/structure/menu/item/' . $mlid . '/edit', $edit, t('Delete'));
+    $this->assertNoText(t('Path field is required.'), t('Delete link on edit form with empty path.'));
   }
 
   /**
diff --git a/modules/node/node.pages.inc b/modules/node/node.pages.inc
index facc7f6..aa163d6 100644
--- a/modules/node/node.pages.inc
+++ b/modules/node/node.pages.inc
@@ -285,6 +285,9 @@ function node_form($form, &$form_state, $node) {
       '#value' => t('Delete'),
       '#weight' => 15,
       '#submit' => array('node_form_delete_submit'),
+      // Keep array('nid') for passing nid of the node
+      // to delete confirmation form
+      '#limit_validation_errors' => array(array('nid')),
     );
   }
   // This form uses a button-level #submit handler for the form's main submit
diff --git a/modules/node/node.test b/modules/node/node.test
index 8a871c0..dde3346 100644
--- a/modules/node/node.test
+++ b/modules/node/node.test
@@ -394,6 +394,54 @@ class PageEditTestCase extends DrupalWebTestCase {
   }
 }
 
+class NodeDeleteTestCase extends DrupalWebTestCase {
+  protected $web_user;
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Node delete',
+      'description' => 'Create a node and test node delete functionality.',
+      'group' => 'Node',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    $this->web_user = $this->drupalCreateUser(array('edit own page content', 'create page content', 'delete own page content'));
+  }
+
+  /**
+   * Check deleting node from edit form with empty title.
+   */
+  function testNodeDeleteEmptyTitle() {
+    $this->drupalLogin($this->web_user);
+
+    $langcode = LANGUAGE_NONE;
+    $title_key = "title";
+    $body_key = "body[$langcode][0][value]";
+    // Create node to delete.
+    $edit = array();
+    $edit[$title_key] = $this->randomName(8);
+    $edit[$body_key] = $this->randomName(16);
+    $this->drupalPost('node/add/page', $edit, t('Save'));
+
+    // Load created node.
+    $node = $this->drupalGetNodeByTitle($edit[$title_key]);
+
+    // Delete the node through edit form.
+    $edit = array();
+    $edit[$title_key] = '';
+    $edit[$body_key] = $this->randomName(16);
+    // Use Delete button on edit form taking off the title.
+    $this->drupalPost("node/$node->nid/edit", $edit, t('Delete'));
+
+    // Check that node edit form can be submitted
+    // with Delete button and empty title.
+    $this->assertNoText(t('Title field is required.'), t('Delete button works with empty title on edit form.'));
+  }
+}
+
 class PagePreviewTestCase extends DrupalWebTestCase {
   public static function getInfo() {
     return array(
diff --git a/modules/path/path.admin.inc b/modules/path/path.admin.inc
index f10142b..0e19a1e 100644
--- a/modules/path/path.admin.inc
+++ b/modules/path/path.admin.inc
@@ -150,6 +150,9 @@ function path_admin_form($form, &$form_state, $path = array('source' => '', 'ali
       '#type' => 'submit',
       '#value' => t('Delete'),
       '#submit' => array('path_admin_form_delete_submit'),
+      // Keep array('pid') for passing pid of the
+      // url alias record to delete confirmation form.
+      '#limit_validation_errors' => array(array('pid')),
     );
   }
 
diff --git a/modules/path/path.test b/modules/path/path.test
index 4112e5f..bf9b224 100644
--- a/modules/path/path.test
+++ b/modules/path/path.test
@@ -107,6 +107,41 @@ class PathTestCase extends DrupalWebTestCase {
   }
 
   /**
+   * Delete alias through alias edit form.
+   */
+  function testDeleteAlias() {
+    // Create alias.
+    $alias = $this->randomName();
+    $edit = array(
+      'source' => '<front>',
+      'alias' => $alias,
+    );
+    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+
+    // Select pid of new created alias.
+    $query = db_select('url_alias');
+    $query->addField('url_alias', 'pid');
+    $query->condition('alias', $alias);
+    $pid = $query->execute()->fetchField();
+
+    // Delete submit with empty source field.
+    $edit = array(
+      'source' => '',
+      'alias' => $alias,
+    );
+    $this->drupalPost('admin/config/search/path/edit/' . $pid, $edit, t('Delete'));
+    $this->assertNoText(t('Existing system path field is required.'), t('Delete alias on edit form with empty source field.'));
+
+    // Delete submit with empty alias field.
+    $edit = array(
+      'source' => '<front>',
+      'alias' => '',
+    );
+    $this->drupalPost('admin/config/search/path/edit/' . $pid, $edit, t('Delete'));
+    $this->assertNoText(t('Path alias field is required.'), t('Delete alias on edit form with empty alias field.'));
+  }
+
+  /**
    * Test alias functionality through the node interfaces.
    */
   function testNodeAlias() {
diff --git a/modules/user/user.admin.inc b/modules/user/user.admin.inc
index 0596bde..7624c88 100644
--- a/modules/user/user.admin.inc
+++ b/modules/user/user.admin.inc
@@ -959,6 +959,9 @@ function user_admin_role($form, $form_state, $role) {
     '#type' => 'submit',
     '#value' => t('Delete role'),
     '#submit' => array('user_admin_role_delete_submit'),
+    // Keep array('rid') for passing rid of the role
+    // to delete confirmation form
+    '#limit_validation_errors' => array(array('rid')),
   );
 
   return $form;
diff --git a/modules/user/user.test b/modules/user/user.test
index 3c453a8..5eeb5c4 100644
--- a/modules/user/user.test
+++ b/modules/user/user.test
@@ -1816,6 +1816,11 @@ class UserRoleAdminTestCase extends DrupalWebTestCase {
     $this->assertFalse(user_role_load_by_name($old_name), t('The role can no longer be retrieved from the database using its old name.'));
     $this->assertTrue(is_object(user_role_load_by_name($role_name)), t('The role can be retrieved from the database using its new name.'));
 
+    // Test submit edit role form with empty role name.
+    $edit = array('name' => '');
+    $this->drupalPost("admin/people/permissions/roles/edit/{$role->rid}", $edit, t('Delete role'));
+    $this->assertNoText(t('Role name field is required.'), t('Role can be deleted with empty name submitted to the form.'));
+
     // Test deleting a role.
     $this->drupalPost("admin/people/permissions/roles/edit/{$role->rid}", NULL, t('Delete role'));
     $this->drupalPost(NULL, NULL, t('Delete'));
