Używanie modalnego trybu Bootstrap na Twitterze zamiast okna potwierdzenia

Próbuję użyć modalnego modalnego Twittera bootstrap zamiast niestandardowego okna potwierdzenia.

Moja funkcja

function getConfirm(confirmMessage){
    if ( confirmMessage == undefined){
        confirmMessage = '';
    }
    $('#confirmbox').modal({
    show:true,
        backdrop:false,
        keyboard: false,
    });

    $('#confirmMessage').html(confirmMessage);
    $('#confirmFalse').click(function(){
        $('#confirmbox').modal('hide');
        return false;
    });
    $('#confirmTrue').click(function(){
        $('#confirmbox').modal('hide');
        return true;
    });
}   
</script>
<div class="modal" id="confirmbox" style="display: none">
    <div class="modal-body">
        <p id="confirmMessage">Any confirmation message?</p>
    </div>
    <div class="modal-footer">
        <button class="btn" id="confirmFalse">Cancel</button>
        <button class="btn btn-primary" id="confirmTrue">OK</button>
    </div>
</div>

Wywołanie funkcji

var confimChange=getConfirm("Do You confirm?");
if(confimChange){
    alert('perfect you confirmed')
}else{
    alert('why didnt you confirmed??')
}

Problem polega na tym, że funkcja getConfirm nie zwraca true ani false.


KOD ROBOCZY:

if(receiverListCount > 0){
    var confimChange=confirm("Message");
    if(confimChange){
        resetReceiverList();
    }else{
        return false;
    }
}

Fragment kodu po modyfikacjach i zmianach / nie działa

if(activeDiv == '#upload'){
    if(listOfSelectedGroups.length> 0|| receiverListCount > 0){
        getConfirm("message",function(result){
            if(result){
                resetReceiverList();
            }else{
                return false;
            }
        });
    }
}

Ostatecznie zdecydowałem się użyć bootboxjs

Author: Ayhan, 2012-08-31

1 answers

Twoje podejście jest błędne, będzie uruchamiane asynchronicznie, aby nie czekać na zamknięcie okna modalnego przed powrotem. Spróbuj czegoś takiego:

function getConfirm(confirmMessage,callback){
    confirmMessage = confirmMessage || '';

    $('#confirmbox').modal({show:true,
                            backdrop:false,
                            keyboard: false,
    });

    $('#confirmMessage').html(confirmMessage);
    $('#confirmFalse').click(function(){
        $('#confirmbox').modal('hide');
        if (callback) callback(false);

    });
    $('#confirmTrue').click(function(){
        $('#confirmbox').modal('hide');
        if (callback) callback(true);
    });
}  

getConfirm('Are you sure?',function(result) {
   // Do something with result...
});

Zauważ jednak, że tak naprawdę musisz tylko raz zainicjować modal i zaczepić zdarzenia raz. Podałbym modalne ciało i ID i po prostu zmieniłbym treść przed pokazaniem.

Powinieneś również ustawić tło na true, chcesz potwierdzenia, aby uniemożliwić użytkownikowi dostęp do strony, dopóki nie potwierdzi.

 22
Author: Lloyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 15:56:33