Contining after preventDefault

by spring1975

HTML

<form id="MyForm">
    <input type="text" value="none" />
    <input type="submit" id="DelayedSubmit" value="Delayed Submit Me" />
    <input type="submit" id="ConfirmMe" value="Confirm Me" />
    <div id="Buttons">
        <a href="javascript:WriteMe('one')">one</a>
        <a href="javascript:WriteMe('two')">two</a>
    </div>
    <a href="#" id="On">On</a>
    <a href="#" id="Off">Off</a>
</form>

JavaScript

function WriteMe(message){
	$('#MyForm').append($('<div>').text(message));
}

$('document').ready(function(){
    $('#ConfirmMe').on('click', function(e) {
        var okToSubmit = !!$('#MyForm').data('OKToSubmit');
        
        if (!okToSubmit){
            e.preventDefault();
            setTimeout(function working() {
                //This won't actually trigger the 
                $('#MyForm').data('OKToSubmit', true).trigger('submit');
            }, 2000 );
        }
    });
    
    $('#ConfirmMe').on('click', function(e){
        if (confirm("Are you sure you want to delete all images from this case?")) {
            return true;
            //$('#MyForm').data('OKToSubmit', true).trigger('submit');
        } else {
            return false;
        }
    });

    var lots_of_stuff_already_done = false;
    
    $('#Buttons a').on('click', preventMyClickViaDataAttribute);
    
    function preventMyClickViaGlobalFlag(e) {
         if (!lots_of_stuff_already_done === true) {
            e.preventDefault();
            lots_of_stuff_already_done = true; // set flag
            //triggering or otherwise calling a click never works, once preventDefault has been called.
             $(this).click();
             //$(this).trigger('click');
            //$('#Buttons a:first').click();
        } else {
            lots_of_stuff_already_done = false; // reset flag
        }
        // do lots of stuff
    }
    
	function preventMyClickViaDataAttribute(e) {
        var $this = $(this),
			okToSubmit = !!$this.data('OKToSubmit');
			
        if (!okToSubmit){
            e.preventDefault();
			setTimeout(function working() {
				$this.unbind('click', preventMyClickViaDataAttribute);
                $this.trigger('click');
            }, 1000 );
        } else {
			//Go for it
		}
	}
	
    $('#On').on('click', function() {
        $('#Buttons a').data('OKToSubmit', 'true');
    });
    $('#Off').on('click', function() {
        $('#Buttons...