2012-12-05 60 views
0

這是推動我瘋了。我在我的頁面上有一個在colorbox中打開的div。當用戶點擊在div的鏈接之一,它觸發一個事件的代碼(見下文),應依次填充隱藏字段,然後單擊服務器按鈕後面運行一些代碼。第一次嘗試時鏈接點擊事件未觸發按鈕點擊事件(僅限IE)。第二次點擊工作。

問題是,在IE(9),它不會點擊第一個嘗試的服務器按鈕(是的,它確實去到客戶端點擊事件)。奇怪的是,它似乎在Chrome和FF中工作正常。

$(document).on('click', '.link', function (e) { 
    e.preventDefault(); 
    var thisID = $(this).attr('href').replace('#ca', ''); 
    $("#hiddenField").val(thisID); 
    $("#button1").submit(); 
}); 

這可能是值得一提的是,在在顏色框打開DIV的鏈接是動態填充。但是這應該會影響鏈接上的點擊事件。

任何幫助,將不勝感激。

回答

0
e=e?e:window.event; 
if($.browser.msie) 
{ 
    e.returnValue=false; 
    e.cancelBubble=true; 
} 
else 
{e.preventDefault();} 
+0

嗨,你能解釋一下這是應該實現的?我不確定我得到了這是做什麼。乾杯。 – Deadlykipper

+0

您防止在IE中點擊鏈接事件,此事件不會停止冒泡,即繼續監聽器第一個事件。對於ff和crrome,你可以用e.preventDefault()來防止這種行爲。我認爲匹配更好使用$(「#button1」)。click(); –

0

試試這個:

$(document).ready(function() { 
    $('.link').click(function (e) { 
     e.preventDefault(); 
     var thisID = $(this).attr('href').replace('#ca', ''); 
     $("#hiddenField").val(thisID); 
     $("#button1").submit(); 
    } 
)}); 
+0

對不起,這不起作用。現在甚至沒有進入鏈接點擊事件,更不用說服務器按鈕了。 :( – Deadlykipper

+0

對不起,最後一行出現語法錯誤,現在試試吧 –

+0

如果鏈接是按照OP的說法動態填充的話,這不會解決問題,您需要使用.on()作爲OP正在嘗試,因爲它允許動作「泡泡」到動態創建的dom元素 – bpeterson76

0

這裏是[小提琴] [1]你的答案。它在所有瀏覽器上工作正常。

我似乎沒有任何問題與您的代碼

剛搬進來的文件準備好功能

+0

沒有鏈接,我認爲這可能與colorbox有關,它以前從未發生過,有點困惑 – Deadlykipper

1

代碼看來,適當的形式將觸發按鈕與.trigger()提交,而不是提交。根據定義,沒有任何附加參數的.submit()鏡像.trigger('submit')這是你在表單上運行的內容,而不是按鈕。

例如:$("#button1").trigger("click");

這裏是documentation on .trigger()

對我來說,提交表單更合乎邏輯的方式將完全繞過按鈕和.submit()的實際形式本身。有可能是你爲什麼不這樣做的原因,但似乎更直接,而不是依靠用戶可能被「搞砸了」的元素。

+0

嗨,對於遲到的迴應感到抱歉 - 我很忙,我會給你一個回覆,回覆你。 – Deadlykipper

相關問題