OK、私は決してJavaScriptの第一人者ではなく、おそらくデスクトップソフトウェア開発の観点から考えていますが、これが私が達成しようとしていることです。
質問:
つまり:
これはモーダル用の私のHTMLコードです(ボタンは-どういうわけか-onclick
javascriptルーチンを介して動作する必要がありますか?)-_#confirmMessage
_は可変になることにも注意してください。
_<div class="modal fade hide" id="confirmAlert">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">x</button>
<h3 id="confirmTitle">Are you sure?</h3>
</div>
<div class="modal-body">
<p id="confirmMessage">Body</p>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Cancel</a>
<a href="#" class="btn btn-danger">Yes</a>
</div>
</div>
_
ただのアイデア:
checkBeforeExec(message,functionToExec)
のような関数を書く#confirmMessage
_をメッセージに設定し、Yes'hrefを_javascript:functionToExec
_に設定します少し紛らわしいように聞こえるかもしれませんが、これを行うための最もjavascriptに適した方法が何であるかはわかりません...
基本的にこれを行うconfirm
ヘルパー関数を使用して、モーダルを中心にダイアログマネージャーを作成しました。
var callback = function(result) {
alert(result);
}); // define your callback somewhere
$('#confirmAlert').on('click', '.btn, .close', function() {
$(this).addClass('modal-result'); // mark which button was clicked
}).on('hidden', function() {
var result = $(this).find('.modal-result').filter('.btn-danger').length > 0; // attempt to filter by what you consider the "YES" button; if it was clicked, result should be true.
callback(result); // invoke the callback with result
});
また、[キャンセル]ボタンと[はい]ボタンの両方をdata-dismiss="modal"
にする必要があります。
Bootstrap 3を使用している場合は、hidden
ではなくhidden.bs.modal
イベントにハンドラーを追加する必要があることに注意してください。
Jqueryを使用すると、次のようなものを使用できます
$('.btn').click(function(){
val=$(this).val()
if(val=='Yes'){
//continue the processing
}
})