1. 程式人生 > >Promise重寫confirm,alert彈出框 .then()

Promise重寫confirm,alert彈出框 .then()

所有程式碼,可以執行:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>confirm重寫</title>
        <link rel="stylesheet" href="css/bootstrap.min.css" />
        <style type="text/css">
            .console-show {
                margin-top
: 200px
; background-color: red; color: white; }
</style> </head> <body> <div class="text-center"> <h1>confirm重寫</h1> <button type="button" class="btn btn-info" id="confirmBtn"
>
Confirm</button> <button type="button" class="btn btn-danger" id="alertBtn">Alert</button> <div class="console-show"></div> </div> <!--下面是模態框--> <div class="modal fade" id="alertModal"> <div
class="modal-dialog">
<div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <h4 class="modal-title"></h4> </div> <div class="modal-body"> <p></p> </div> <div class="modal-footer"> <button type="button" class="btn btn-danger sureBtn" data-dismiss="modal">確定</button> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal-dialog --> </div> <!-- /.modal --> <!--下面是模態框--> <div class="modal fade" id="confirmModal"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <h4 class="modal-title"></h4> </div> <div class="modal-body"> <p></p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default cancelBtn" data-dismiss="modal">取消</button> <button type="button" class="btn btn-danger sureBtn" data-dismiss="modal">確定</button> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal-dialog --> </div> <!-- /.modal --> </body> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script src="js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> function ReAlert(title, content) { var alertPromise = new Promise(function(resolve, reject){ $('#alertModal .modal-title').text(title); $('#alertModal .modal-body p').text(content); $('#alertModal').modal('show'); $('#alertModal .sureBtn').off('click').click(function() { resolve(content); }) }) return alertPromise; }; function ReConfirm(title, content) { var confirmPromise = new Promise(function(resolve, reject){ $('#confirmModal .modal-title').text(title); $('#confirmModal .modal-body p').text(content); $('#confirmModal').modal('show'); $('#confirmModal .sureBtn').off('click').click(resolve); $('#confirmModal .cancelBtn').off('click').click(reject); }) return confirmPromise; }; $('#alertBtn').click(function() { ReAlert('提示', '確定加入索尼大法?').then(function(str){ console.log(str); $('.console-show').text('Prmoise_alert頁面點選"確定"'); }) }); $('#confirmBtn').click(function() { ReConfirm("警告", '確認退出索尼教?').then(function(){ console.log('確定被點選,執行後續操作'); $('.console-show').text('Promise_resolve_confirm頁面點選"確定"'); },function(){ console.log("取消被點選,返回之前的操作"); $('.console-show').text('Promise_reject_confirm頁面點選"取消"'); }) }) </script> </html>

js程式碼:

        function ReAlert(title, content) {
            var alertPromise = new Promise(function(resolve, reject){
                $('#alertModal .modal-title').text(title);
                $('#alertModal .modal-body p').text(content);
                $('#alertModal').modal('show');
                $('#alertModal .sureBtn').off('click').click(function() {
                    resolve(content);
                })
            })
            return alertPromise;
        };


        function ReConfirm(title, content) {
            var confirmPromise = new Promise(function(resolve, reject){
                $('#confirmModal .modal-title').text(title);
                $('#confirmModal .modal-body p').text(content);
                $('#confirmModal').modal('show');
                $('#confirmModal .sureBtn').off('click').click(resolve);
                $('#confirmModal .cancelBtn').off('click').click(reject);
            })
            return confirmPromise;
        };

        $('#alertBtn').click(function() {
            ReAlert('提示', '確定加入索尼大法?').then(function(str){
                console.log(str);
                $('.console-show').text('Prmoise_alert頁面點選"確定"');
            })
        });

        $('#confirmBtn').click(function() {
            ReConfirm("警告", '確認退出索尼教?').then(function(){
                console.log('確定被點選,執行後續操作');
                $('.console-show').text('Promise_resolve_confirm頁面點選"確定"');
            },function(){
                console.log("取消被點選,返回之前的操作");
                $('.console-show').text('Promise_reject_confirm頁面點選"取消"');
            })
        })