1

Bootstrapモーダルを使用して確認ダイアログを作成するための次のコードがあります。これはクロージャー内で呼び出されると想定されています。

this.events.register(this, function(e) {

  this.makeModal(e);

  // this is what used to work for me
  /*
  if (confirm('Are you sure?')) {
    alert(e.data);
  } else {
    // DO NOTHING
  }
  */
});

makeModal: function(e) {    

  //...

  $(btnCancel).on("click", $(modal).modal('hide'));
  $(btnConfirm).on("click", alert('confirm'));
}

ボタンは、btnCancelとbtnConfirmの2つだけです。問題は、外部関数が呼び出された後、内部アラートもすぐにトリガーされ、確認ダイアログが役に立たなくなることです。どうすればこれを修正できますか?特定の理由で、ブートボックスなどのライブラリを使用できません。

または、このモーダルから「はい」または「いいえ」を返すことはできますか?もしそうなら、どうすればそれを行うことができますか?

前もって感謝します!


編集:これは、はいまたはいいえを返す私の貧弱な試みです:

makeModal: function(e) {    

  //...
  var choice;
  $(btnCancel).on("click", choice = false);
  $(btnConfirm).on("click", choice = true);
  return choice;
}
4

1 に答える 1

3

これは、あなたがやろうとしていることを達成するための別の方法の例です。

$('#myModal').bind('show', function() {
    var id = $(this).data('id'),
    yesBtn = $(this).find('.danger');
    $(yesBtn).data('id', id);

}).modal({ backdrop: true });

$('.delete-button').click(function(e) {
    e.preventDefault();
    var id = $(this).data('id');
    $('#myModal').data('id', id).modal('show');
});

$('.danger').click(function(){
    var id = $(this).data('id');
    $('#myModal').modal('hide');
    alert('Deleting: ' + id);
    //Do something with id
});

JsFiddleを表示するには、ここをクリックしてください

于 2013-03-22T21:29:03.013 に答える