开发者

Javascript confirm delete

Am creating a simple cms and i have the following

<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>

The above code is wrapped in a form tag

This my javascript code

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

This is delete function in my controller

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开发者_StackOverflow->set_flashdata("message","Article(s) Deleted");
        redirect("admin/articles","refresh");
     }

But when cancel is clicked in the confirm dialog the form still is still submited and the selected article deleted. Please advice on what to do


Try changing

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

to

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

You're running the delete_confirm() function inside of the onclick function. you need to return false from the onclick() function itself.


try onSubmit instead of onClick.


What you'll want to do is something like this:

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

When the form is submitted via the type="submit"-button, your delete_confirm()-function is called. If it returns true, the form is submitted. If it returns false, it's not.


Try using AJAX to call the PHP script from within Javascript.

This means set the input button type to button <input type="button" /> and change the onclick such that if cancel is pressed, return false (like what you did) or if OK is pressed, run the AJAX script and redirect the page if required...

You could write the AJAX server-side (PHP) script in a seperate file, and send in the paramters using $_GET.


delete_confirm() must always return false in your case.


You want the delete confirm function to be your onsubmit attribute of the form. Having it on the input element is not enough.


Maybe try to use:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜