[解決済み] [Solved] How to display a confirmation dialog when clicking an <a> link?
Question
I want this link to have a JavaScript dialog that asks the user “ Are you sure? Y/N ”.
<a href="delete.php?id=22">Link</a>
If the user clicks “Yes”, the link should load, if “No” nothing will happen.
I know how to do that in forms, using
onclick
running a function that returns
true
or
false
. But how do I do this with an
<a>
link?
How to solved?
Inline event handler
最もシンプルな方法では、このように
confirm()
関数をインラインの
onclick
ハンドラです。
<a href="delete.php?id=22" onclick="return confirm('Are you sure?')">Link</a>
高度なイベント処理
しかし、通常であれば HTMLとJavascriptを分離する だから、インライン・イベント・ハンドラを使わずに、リンクにクラスを付けて、それにイベント・リスナーを追加することをお勧めします。
<a href="delete.php?id=22" class="confirmation">Link</a>
...
<script type="text/javascript">
var elems = document.getElementsByClassName('confirmation');
var confirmIt = function (e) {
if (!confirm('Are you sure?')) e.preventDefault();
};
for (var i = 0, l = elems.length; i < l; i++) {
elems[i].addEventListener('click', confirmIt, false);
}
</script>
この例
はモダンブラウザでのみ動作します(古いIEでは
attachEvent()
,
returnValue
の実装を提供し
getElementsByClassName()
または、クロスブラウザの問題を解決するjQueryのようなライブラリを使用します)。詳しくは
この高度なイベント処理方法については、MDN
.
jQuery
jQueryのファンボーイと思われないようにしたいのですが、DOM操作とイベントハンドリングは、ブラウザの違いによって最も役立つ2つの分野です。ちょっと面白いので、次のように表示します。 jQuery :
<a href="delete.php?id=22" class="confirmation">Link</a>
...
<!-- Include jQuery - see http://jquery.com -->
<script type="text/javascript">
$('.confirmation').on('click', function () {
return confirm('Are you sure?');
});
</script>
関連
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptのオブジェクトを表示するにはどうすればよいですか?
-
[解決済み] モバイルブラウザの検出
-
[解決済み] React-routerのURLを更新したり、手動で書き込んだりするとうまくいかない
-
[解決済み] Ok "と "Cancel "オプションのあるダイアログを作成する方法
-
[解決済み] JavaScriptが無効になっているかどうかを確認する方法を教えてください。
-
[解決済み] ブラウザウィンドウで現在のタブを閉じるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み】中央値の計算 - javascript