2012-02-02 33 views
1

我有一個燈箱/模式,顯示一個窗體,但在選擇標記有一個回發呼叫,它保持關閉我的燈箱。有沒有辦法阻止使用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
$('#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()函數k屬性,這樣,你將能夠避免回傳。

+1

那沒起作用,略有延遲但仍然關閉燈箱。我無法控制向元素添加ID。忘了說,頁面上有多個select元素,它們都有_postbacks – NiseNise 2012-02-02 16:10:43

+0

這是ASP.NET嗎? – 2012-02-02 16:18:37

+0

是的,它是用ASP.NET編寫的,會試試你的建議 – NiseNise 2012-02-02 16:46:33

0

您只需從form提交處理程序返回false以防止表單被髮布。嘗試這個。

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