2010-11-27 11 views
11

削除ボタンに確認ダイアログを追加して、選択したアイテムを削除しないかどうかを確認します。Javascriptの確認ダイアログ

もしそうでなければ、何も起こらないはずです。それ以外の場合は、URLを実行する必要があります。

私はこれをいくつかのjavascriptコードで実現する方法を知っていますが、コードが少ないソリューションを探しています。私は例えば:

ヘッダ内に余分なjavascriptを付けずに、すべての機能をonClick要素に入れることはできますか?

+0

javascriptの専門家ではありません。しかし、onClickで呼び出される関数を記述することはできませんか? – starcorn

答えて

18

(ただし、理想からは遠いですが):周りを回してください。

<a href="#" 
    onclick="if confirm('Sure?') { window.location='http://mysite.de/xy/delete';}"> 
    Click to delete 
</a> 

JavaScriptを使用しない限り、少なくともリンクが動作しないようにします。これにより、リンクが誤ってGoogleや一部のローカルプラグインによってもクロールされるリスクを軽減します。 (サムネイルとしてロード/表示しようとするプラグインがある場合は画像)リンクのホバー上のターゲットページ!)

なお、この解決策は理想的ではありません。実際にはURLを参照すると、そのためにURLが履歴に表示されることがあります。あなたは実際にBobを削除し、新しいBobを作成し、ブラウザで「戻る」をクリックするだけで、誤ってそのBobを削除することができます!

JavaScriptやフォームを使用して目的のアクションを投稿する方がよい場合があります。 DELETEメソッドを使用すると、POSTメソッドを使用してサーバーに要求することができます。これにより、URLのインデックスが作成されなくなります。

+0

合意しました、これは少し良いです。たとえば、ブラウザの履歴に表示されるページに関連する潜在的なリスクがあります。 – cspolton

+0

私はリンクを印刷するためにphpを使用していますが、これはなぜ動作していないのでしょうか?: 'a class = "garbage" href = "#" onclick = "if(confirm(" Sure? location = "http://www.web.de";} "> '; –

+1

あなたは "あなたの周りに引用符をエスケープする必要がありますか?"と "web.de"。 – cspolton

27

あなたはこのように、(true/falseを返す)confirm()returnことができます。

<a href="mysite.de/xy/delete" onClick="return confirm('You sure??');">Delete</a> 

You can test it here

+1

これは技術的にはうまくいくが、ベストプラクティスではないので、この方法はお勧めできない。アクションは実際にサーバーにポストされるべきです。 – cspolton

+0

私は 'GET'や' POST'ではなく 'DELETE'と思っています... – wprl

5

ユーザーがJavaScriptを無効にしている場合、またはGoogleが一緒に来て、クモとどうなるかを考えてみましょうリンク。あなたのエンティティは削除されますか?

もっと良い方法は、削除するフォームを投稿することです。

+0

この削除リンクは公開されていないと思うので問題ありません。 – jwueller

+0

JavaScriptを有効にしなければならないバックエンドサービスにはこの機能が必要です –

+2

これは、他にセキュリティがないと想定しています...しかし、私はPOSTをアクションに使用する必要があります。 –

2

ちょうどそれを行うjQueryプラグインがあります:jquery.confirm

例:

<a href="home" class="confirm">Go to home</a> 

JSコード:ユーザーが確認すると

$('.confirm').confirm(); 

screenshot

、彼は<a>のリンクにリダイレクトされ、他には何も起こりません。

関連する問題