2011-07-16 5 views
6

簡単なCMSを作成し、私はJavascriptが

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

formタグ

に包まれている。これは、削除されアムを削除確認私のコントローラの機能

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

しかし、確認ダイアログでキャンセルをクリックすると、フォームは依然として送信され、選択された記事は削除されます。 何をするかアドバイスをしてください

答えて

6

あなたはonclickの関数の内部でdelete_confirm()関数を実行している

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

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

を変更してみてください。 onclick()関数自体からfalseを返す必要があります。

+0

ありがとうございます – MrFoh

0

delete_confirm()は、必ずfalseを返す必要があります。

フォームが type="submit" - ボタンを経由して送信され
<form onsubmit="return delete_confirm();" ...> 
    <input ...> 
</form> 

、あなたのdelete_confirm() -functionが呼び出された:あなたがしたいと思う何

2

はこのようなものです。 trueを返すと、フォームが送信されます。 falseを返す場合は、それはありません。

0

削除確認機能をフォームのonsubmit属性にします。それを入力要素に置くだけでは不十分です。

0

たぶん使用しよう:

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

には、JavaScript内からPHPスクリプトを呼び出すためにAJAXを使用してみてください。

入力ボタンのタイプをボタン<input type="button" />に設定し、キャンセルが押された場合はfalseを返します(OKを押した場合).AJAXスクリプトを実行し、必要に応じてページをリダイレクトします。 ..

別々のファイルにAJAXサーバー側(PHP)スクリプトを記述し、$ _GETを使用してパラメータを送信することができます。