用jQuery花式框替换默认浏览器确认

时间:2015-12-09 06:16:57

标签: javascript jquery html

而不是基本的浏览器确认框,我想用花哨的盒子替换它。

我的默认确认工作如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p><a class="btn-remove" onclick="return confirm('Are you sure you would like to remove this item from the shopping cart?');" title="Remove This Item" href="http://google.com">Default</a></p>

我尝试将其替换为如下,

<p><a class="btn-remove" onclick="return getConfirm();" title="Remove This Item" href="http://google.com">Test</a></p>

<script type="text/javascript">

        function getConfirm(){
            jQuery.fancybox("#data");
            $('#yes').on('click', function(){
                console.log('I am clicked');
                return true;
            })
            $('#no').on('click', function(){
                return false;
            })
            return false;
        }
</script>

function getConfirm(){
			jQuery.fancybox("#data");
			$('#yes').on('click', function(){
				console.log('I am clicked');
				return true;
			})
			$('#no').on('click', function(){
				return false;
			})
			return false;
		}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.js"></script>

<p><a class="btn-remove" onclick="return getConfirm();" title="Remove This Item" href="http://google.com">Test</a></p>
<div id="data" style="display:none">
	<p>Are you sure want to colse?</p>
	<p><div id="yes">Yes</div><div id="no">No</div></p>
</div>

但是它没有返回true给href,因此页面没有重定向。

1 个答案:

答案 0 :(得分:1)

您仅从点击处理程序返回true,而不是getConfirm函数。

点击#yes按钮后发生(异步),现在为时已晚,无法向锚点返回任何内容,该船已经航行,现在您必须自行重定向,如同花式框对话框一样不会停止浏览器UI并等待本机确认的响应方式。

function getConfirm(anchor){

    jQuery.fancybox("#data");

    $('#yes').on('click', function(){
        window.location.href = anchor.href;
    });

    $('#no').on('click', function(){
        // close fancybox
        return false;
    });

    return false;
}

并确保通过this

<a class="btn-remove" onclick="return getConfirm(this);" ...