即使'return false'运行,删除也不会停止

时间:2012-10-09 18:04:31

标签: php jquery forms submit confirm

我已经实现了在我的应用程序中从数据库中删除用户的功能。用户选择用户(复选框)并单击提交。将显示一个确认框,询问用户是否要删除用户名。一切正常,除非点击取消,用户仍然被删除。

为什么会这样,我怎么能阻止它(我检查并返回错误运行)

来自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;
      }
      }
  });
});

2 个答案:

答案 0 :(得分:4)

false返回.each()并不会停止提交,将该值存储在变量中并返回该变量。

$('#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;
});

答案 1 :(得分: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;
    }
});

如果用户取消任何所选用户,这将阻止提交整个表单。如果您打算继续提交任何确认的用户,您可以尝试以下内容:

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

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