こんにちは、私はjquery初心者ですし、simplemodalプラグインを使用しようとしています。この試みの前に私のコードはsimplemodalデモは、URLのリダイレクトを行うSimpleModal Override:URLリダイレクトの代わりにtrueまたはfalseを返すようにコールバックを希望します
isYes = confirm("Are you sure . . . "?);
return isYes;
ました。デフォルトの確認ボタンがtrueまたはfalseを返すようにしたいと思います。
これは可能ですか?
これを試してみると(下のコードを参照してください)、モーダルダイアログがポップアップしますが、何かをクリックする前に、基本的なボタンアクションが続きます。
これは私が確認を呼び出す方法です。この作品を作るために
confirm(confirm_message, function(isYes) { return isYes; });
function confirm(message, callback) {
var isYes = false;
$('#confirm').modal({
closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
position: ["20%", ],
overlayId: 'confirm-overlay',
containerId: 'confirm-container',
onShow: function(dialog) {
var modal = this;
$('.message', dialog.data[0]).append(message);
// if the user clicks "yes"
$('.yes', dialog.data[0]).click(function() {
isYes = true;
// call the callback
if ($.isFunction(callback)) {
callback.apply(this, jQuery.makeArray(isYes));
}
// close the dialog
modal.close(); // or $.modal.close();
});
}
});
return isYes;
}
ありがとう、エリック、コードのために!期待どおりに動作します。しかし、私が持っている文脈のために、私はもっと何かが必要だと思います。私はボタンクリックイベントハンドラの中で確認の呼び出しを持っています。私はちょうどtrueまたはfalseを返すハンドラを許可することは、simplemodal確認の呼び出しの前にpreventDefault()のため何もしないことに気づいた。コールバック関数からtrueが返された場合、ボタンのクリックに関連付けられたサーバー側のイベントハンドラを起動する必要があります。 –
preventDefault()をコメントアウトすると、フォームは[はい]または[いいえ]を選択する前に送信されます。私は誤って問題を修正したと考えました。 –
確認機能の目的は、既定のブラウザ機能を上書きすることです。これは、実行されていないことを実行しようとしている可能性があります。 –