1

アプリケーションのデータベースからユーザーを削除する機能を実装しました。ユーザーはユーザー (チェックボックス) を選択し、[送信] をクリックします。usernameを削除するかどうかをユーザーに尋ねる確認ボックスが表示されます。キャンセルがクリックされた場合でもユーザーが削除されることを除いて、すべてが機能します。

それはなぜですか、どうすればそれを防ぐことができますか (私はチェックして偽の実行を返します)

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;
      }
      }
  });
});
4

2 に答える 2

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;
});
于 2012-10-09T18:07:52.817 に答える
1

(警告: すべてのコードは頭のてっぺんから外れており、適切にテストされていません)

return false;あなたがJavaScriptのステートメントについて話していると仮定すると:

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
       }
    });
});
于 2012-10-09T18:21:01.007 に答える