2012-10-09 123 views
1

我已經實現了從我的應用程序中的數據庫中刪除用戶的功能。用戶選擇用戶(複選框)並點擊提交。顯示一個確認框詢問用戶是否要刪除用戶名。除了單擊「取消」之外,所有用戶仍然可以使用。即使'返回false'運行,刪除也不會停止

這是爲什麼,我怎麼能阻止它(我有檢查和返回假運行)

從usercontroller.php:

if ($userView->TriedToRemoveUser()) { 
    $userIds = $userView->GetUsersToRemove(); 

    if ($userIds != 0) { 
    $removeTry = $userHandler->RemoveUser($userIds); 

    if ($removeTry) { 
     $xhtml = \View\UserView::USER_REMOVED; 
    } 
    else { 
     $xhtml = \View\UserView::FAILED_TO_REMOVE_USER; 
    } 
    } 
} 

從userview.php

public function TriedToRemoveUser() { 
    if (isset($_POST[$this->_submitRemove])) { 
    return true;   
     } 
     else { 
     return false; 
     } 
} 

從js.file:

$('#form3').submit(function() { 
    $('input[type=checkbox]').each(function() { 
    if(this.checked) { 
     var username = $(this).attr('user'); 

     var confirmBox = confirm('Do you really want to remove the user ' + username + ' ?'); 

     if (!confirmBox) { 
     return false; 
     } 
     } 
    }); 
}); 
+0

你的意思是請求依然取得了即使'返回false即使'$ userView-> TriedToRemoveUser()'返回false,PHP代碼仍然會執行。 – pgraham

+0

我的意思是即使返回false,仍然會提交提交請求。但是,凱文B的回答下面解決了這個問題! – holyredbeard

回答

1

(警告:所有的代碼是從我的頭頂,而不是正確的測試)

假設你正在談論在JavaScript中return false;聲明:

return false;不會阻止提交方法,因爲它只是從.each()方法中突破。所有這些都會停止對複選框的迭代。

嘗試類似:

$('#form3').submit(function() { 
    var doDelete = true; 

    $('input[type=checkbox]').each(function() { 
     // ... 

     if (!confirmBox) { 
      doDelete = false; 
      return false; // Deletion has been cancelled so there is no need to continue the iteration 
     } 
    }); 

    if (!doDelete) { 
     return false; 
    } 
}); 

這將防止整個形式從如果用戶取消任何選定的用戶提交。如果你打算繼續提交任何證實的用戶,您可以嘗試像下面:;在JavaScript或使用`運行

$('#form3').submit(function() { 
    $('input[type=checkbox]').each(function() { 
     // ... 

     if (!confirmBox) { 
      $(this).attr('checked', false); //Uncheck this box so that it isn't submitted 
     } 
    }); 
}); 
+0

非常感謝。最後一個正是我所追求的,它完美運作。 – holyredbeard

4

.each()返回false不會停止提交,該值存儲在一個變量,並返回該變量。

$('#form3').submit(function() { 
    var submit = true; 
    $('input[type=checkbox]').each(function() { 
     if(this.checked) { 
      var username = $(this).attr('user'); 

      var confirmBox = confirm('Do you really want to remove the user ' + username + ' ?'); 

      if (!confirmBox) { 
       submit = false; 
       return false; 
      } 
     } 
    }); 
    return submit; 
}); 
+0

工程就像一個魅力,非常感謝! – holyredbeard

+0

另一種方法是使用for或while循環,這將允許您刪除附加變量並簡單地返回false。 –

+0

是的,這也是一種解決辦法,謝謝。 – holyredbeard

相關問題