Javascript подтвердить удаление - PullRequest
6 голосов
/ 17 июля 2011

Я создаю простой CMS, и у меня есть следующее

<input type="submit" value="delete" title="Delete Aricle(s)" id="delete_btn" onclick="delete_confirm()" />

<tbody>
  <?php foreach ($articles as $article): ?>
  <tr>
    <td align="center">
    <input id="article_id"name="article[]" type="checkbox" value="<?php echo $article->id; ?>" /></td>
    <td align="center"><?php echo anchor('admin/articles/edit/'.$article->id,$article->title); ?></td>
    <td align="center"><?php echo $article->author; ?></td>
    <td align="center"><?php echo $article->category; ?></td>
    <td align="center"><?php published($article->post_status); ?></td>
    <td align="center"><?php featured($article->featured); ?></td>
    <td align="center"><?php echo $article->views; ?></td>
    <td align="center"><?php echo $article->post_date; ?></td>
  </tr>
  <?php endforeach;?>
  </tbody>

Приведенный выше код обернут в тег формы

Это мой код JavaScript

function delete_confirm() {
    var msg = confirm('Are you sure you want to delete the selected article(s)');
    if(msg == false) {
        return false;
    }
}

Это функция удаления в моем контроллере

function articles_delete() {
        //Load Model
        $this->load->model("article_model");
        //Assign article id to variable
        $checkbox = $_POST['article'];
        //loop through selected checkbox
        for($i = 0; $i < count($checkbox); $i++) {
            //Call delete method of the article model
            $this->article_model->delete($checkbox[$i]);
        }
        $this->session->set_flashdata("message","Article(s) Deleted");
        redirect("admin/articles","refresh");
     }

Но при нажатии кнопки отмены в диалоговом окне подтверждения форма все еще отправляется, а выбранная статья удаляется.Посоветуйте пожалуйста что делать

Ответы [ 7 ]

6 голосов
/ 17 июля 2011

Попробуйте изменить

<input type="submit" value="delete" title="Delete Aricle(s)" id="delete_btn" onclick="delete_confirm()" />

на

<input type="submit" value="delete" title="Delete Aricle(s)" id="delete_btn" onclick="return delete_confirm();" />

Вы используете функцию delete_confirm () внутри функции onclick,вам нужно вернуть false из самой функции onclick ().

2 голосов
/ 17 июля 2011

Попробуйте использовать AJAX для вызова PHP-скрипта из Javascript.

Это означает, что установите тип кнопки ввода на кнопку <input type="button" /> и измените клик так, чтобы при нажатии отмены возвращалось значение false (как и то, что вы сделали) или, если нажата кнопка OK, запустите сценарий AJAX и перенаправьтестраница, если требуется ...

Вы можете написать серверный (PHP) сценарий AJAX в отдельном файле и отправить параметры с помощью $ _GET.

2 голосов
/ 17 июля 2011

То, что вы захотите сделать, выглядит примерно так:

<form onsubmit="return delete_confirm();" ...>
  <input ...>
</form>

Когда форма отправляется с помощью кнопки type="submit", вызывается ваша функция delete_confirm().Если возвращается true, форма отправляется.Если он возвращает false, это не так.

2 голосов
/ 17 июля 2011

попробуйте onSubmit вместо onClick.

0 голосов
/ 17 июля 2011

Возможно попробуйте использовать:

<a href="javascript: if(confirm('Relly?')) { document.getElementById('your_form').action='php.php'; document.getElementById('your_form').submit(); } ">Delete</a>
0 голосов
/ 17 июля 2011

Вы хотите, чтобы функция подтверждения удаления была вашим onsubmit атрибутом формы. Недостаточно иметь его на элементе ввода.

0 голосов
/ 17 июля 2011

delete_confirm() всегда должен возвращать false в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...