2011-07-16 26 views
6

Estoy creando un CMS sencillo y tengo el siguienteJavascript confirmar borrar

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

El código anterior se envuelve en una etiqueta de formulario

Esta mi código Javascript

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

Ésta es eliminar función en mi controlador

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

Pero cuando se hace clic en cancelar en el cuadro de diálogo de confirmación, el formulario todavía se envía y se elimina el artículo seleccionado. Por favor, consejo sobre qué hacer

Respuesta

6

intente cambiar

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

a

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

Usted está ejecutando la función delete_confirm() dentro de la función onclick. necesita devolver falso desde la función onclick().

+0

Eso funcionó gracias – MrFoh

0

delete_confirm() siempre debe devolver false en su caso.

2

Lo que usted querrá hacer es algo como esto:

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

Cuando el formulario se envía a través de la type="submit" -botón, su -función delete_confirm() se llama. Si devuelve true, se envía el formulario. Si devuelve false, no lo es.

0

Desea que la función de confirmación de eliminación sea su atributo onsubmit del formulario. Tenerlo en el elemento de entrada no es suficiente.

0

quizás tratar de usar:

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

Trate de usar AJAX para llamar al script PHP desde Javascript.

Esto significa configurar el botón de entrada tipo <input type="button" /> y cambiar el onclick de manera que si se presiona cancelar, devuelve falso (como lo hizo) o si se presiona OK, ejecute el script AJAX y redirija la página si es necesario. ..

Puede escribir el script del lado del servidor AJAX (PHP) en un archivo separado, y enviar los parámetros usando $ _GET.