簡単なものにはwindow.confirmを使用できます。
すべてのJavaScriptのブロックを気にせず、スタイルを制御できない場合に機能します。
confirm
とalert
すべてのブラウザに組み込まれていますが、それらは非常に制限されており、通常、1回限りのブラウザ以外にはひどく良いアイデアではありません。
はるかに詳細な制御を行うには、ブートストラップからjquery uiダイアログやブートボックスなどを取り込む必要があります。これは単なるhtmlであるため、無限に柔軟性があります。ただし、問題のライブラリをすでに使用している場合を除いて、セットアップが面倒です。また、これらすべてがjavascriptの実行をブロックすることはありません。これもまた、はるかに強力で優れた「実践」ですが、人々、特に初心者にとっては頭を動かすのが困難です。
したがって、次のようなことができます(jQueryを想定):
$('button[name=delete]').click(function() {
if(window.confirm("You really sure?"))
doDelete();
});
またはjQueryuiを使用する:
$('button[name=delete]').click(function() {
$('<div>').text("You really sure?") //Create a simple text element to be dialog'ed
.dialog({
buttons: {
"Yes": function(){
doDelete()
$(this).dialog('close');
}
,"No": function() { $(this).dialog('close'); }
});
});
完全を期すために、冗長なコードを削除する巧妙な方法を次に示します。
$('button[name=delete]').click(function() {
$('<div>').text("You really sure?") //Create a simple text element to be dialog'ed
.dialog({
buttons: {
"Yes": closeAnd(doDelete)
,"No": closeAnd()
});
function closeAnd(fn) { //this function is automatically hoisted
return function() { //return a handler
$(this).dialog('close'); //value of 'this' is determined by who invokes it
fn && fn(); //invoke fn if it was passed
}
}
});