Как предотвратить обратный звонок в лайтбокс / модал - PullRequest
1 голос
/ 02 февраля 2012

У меня есть лайтбокс / модал, который отображает форму, но в теге 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 ]

2 голосов
/ 02 февраля 2012
$('#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, функция __doPostBack () объявляется для атрибута onclick, поэтому вы сможете избежать обратной передачи.

0 голосов
/ 02 февраля 2012

Вы можете просто вернуть false из обработчика отправки form, чтобы предотвратить публикацию формы. Попробуйте это.

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