【问题标题】:Javascript confirm deleteJavascript 确认删除
【发布时间】:2011-10-06 21:32:04
【问题描述】:

我正在创建一个简单的 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");
     }

但是当在确认对话框中单击取消时,表单仍然被提交并且所选文章被删除。 请指教该怎么做

【问题讨论】:

    标签: php javascript codeigniter


    【解决方案1】:

    尝试onSubmit 而不是onClick。

    【讨论】:

      【解决方案2】:

      delete_confirm() 在您的情况下必须始终返回 false。

      【讨论】:

        【解决方案3】:

        你想要做的是这样的:

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

        当通过type="submit"-按钮提交表单时,您的delete_confirm()-函数会被调用。如果它返回true,则提交表单。如果返回false,则不是。

        【讨论】:

          【解决方案4】:

          您希望删除确认功能成为表单的onsubmit 属性。将它放在输入元素上是不够的。

          【讨论】:

            【解决方案5】:

            也许尝试使用:

            <a href="javascript: if(confirm('Relly?')) { document.getElementById('your_form').action='php.php'; document.getElementById('your_form').submit(); } ">Delete</a>
            

            【讨论】:

              【解决方案6】:

              尝试使用 AJAX 从 Javascript 中调用 PHP 脚本。

              这意味着将输入按钮类型设置为按钮 &lt;input type="button" /&gt; 并更改 onclick 以便如果按下取消,返回 false(就像你所做的那样)或者如果按下 OK,运行 AJAX 脚本并在需要时重定向页面...

              您可以在单独的文件中编写 AJAX 服务器端 (PHP) 脚本,然后使用 $_GET 发送参数。

              【讨论】:

                【解决方案7】:

                尝试改变

                &lt;input type="submit" value="delete" title="Delete Aricle(s)" id="delete_btn" onclick="delete_confirm()" /&gt;

                到

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

                您正在 onclick 函数内部运行 delete_confirm() 函数。您需要从 onclick() 函数本身返回 false。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-09-26
                  • 2020-02-26
                  • 2018-02-03
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多