如何防止灯箱/模态中的回发呼叫

时间:2012-02-02 15:35:00

标签: javascript jquery modal-dialog

我有一个显示表单的灯箱/模式,但是在select标签中有一个回拨调用,它会保持关闭我的灯箱。有没有办法阻止使用JavaScript的回发调用。

$(document).ready(function () {
                var display = $('.lightbox-overlay').css('display');
                $('.lightbox').click(function (e) {
                    if ($('.lightbox-overlay').length != 0) {
                        $("body").css("overflow", "hidden");
                    }
                    $('.lightbox-overlay').animate({ 'opacity': '.9' }, 300, 'linear');
                    $('.dialog-ui').animate({ 'opacity': '1.00' }, 300, 'linear');
                    $('.lightbox-overlay, .dialog-ui').css('display', 'block');
                    e.preventDefault();
                });

                $('.close-btn').click(function () {
                    closeBox();
                });

                $('.lightbox-overlay').click(function () {
                    closeBox();
                });
            });

            function closeBox() {
                $('.lightbox-overlay, .dialog-ui').css('display', 'none');
                $("body").css("overflow", "visible");
            }

HTML

    <a class="lightbox click-here-link" href="#">click here</a>
    <div class="dialog-ui">
    <div class="inner">
        <a class="close-btn" href="#">close</a>
        <h3>Build your product</h3>

        <div class="data-row clearfix">     <span class="product-build-steps">1</span><span id="ctl21_pb_LBL_og1150"><label>Select Hand</label></span> <select id="ctl21_pb_DDL_og1150" onchange="javascript:setTimeout('__doPostBack(\'ctl21$pb_DDL_og1150\',\'\')', 0)" name="ctl21$pb_DDL_og1150">   <option value="HRH" selected="selected">Right Hand</option>     <option value="LRH">Left Hand (+£1.99)</option>

</select>

2 个答案:

答案 0 :(得分:2)

$('#selectTag').change(function(e){
   e.preventDefault();
});

这样,选择停止做它应该做的事情

试试这个:

var container = //dom selector for the div or whatever that has all the selects
$(container).find('select').each(function(){
   $(this).removeAttr('onchange');
});

如果这是ASP.NET,则在onclick属性上声明__doPostBack()函数,这样就可以避免回发。

答案 1 :(得分:0)

您可以从form提交处理程序返回false以防止表单被发布。试试这个。

$('form').submit(function(){
     //You might have to add some condition here before returning false
     return false;
});