4

I want to create a custom confirm box like this

var should_I_move_forward = myconfirmbox();

myconfirmbox will show a popup with Yes/No button, I want to pause the execution here until user hit yes or no, how can I achieve it?

i.e. same functionality as of js confirm method buy my own UI.

coure2011
  • 40,286
  • 83
  • 216
  • 349

2 Answers2

2

You can't.

You will have to move the logic that follows the confirmation inside the myconfirmbox method, or pass it as parameters (to call on demand)..

something like

function ConfirmYes(){
  // do something for Yes
}

function ConfirmNo(){
  // do something for No 
}

function myconfirmbox(yesCallback, noCallback){

    // whatever you currently do and at the end

    if (confirmation == 'yes'){
      yesCallback();
    } else {
      noCallback();
    }

}

myconfirmbox(ConfirmYes, ConfirmNo);
Gabriele Petrioli
  • 191,379
  • 34
  • 261
  • 317
1

What I did is not elegant at all but it working fine for me! I create a custom confirm function like:

function jqConf(msg,y,n){
     $('body').append('<div id="confirmBox">msg</div>');
     $('#confirmBox').append('<div id="confirmButtons"></div>');
     $('#confirmButtons').append('<button onclick="'+y+'();">Yes</button>');
     $('#confirmButtons').append('<button onclick="'+n+'();">No</button>');
}

function defaultYes(){
     alert('Awesomeness!');
}

function defaultNo(){
     alert('No action taken!');
}

The I use it like this:

<button onclick="jqConf('Do you love me?','defaultYes','defaultNo')">Confirm</button>

This way I pass as a string the name of the function to run if Yes and if No individually and is executed by the user event.

As I say, nothing elegant but it works!, no loops or confusing codes, I think?, In the example I'm using jQuery but can be accomplish with plain JavaScript too!

raphie
  • 3,285
  • 2
  • 29
  • 26