2011-09-11 58 views
4

我有一個複選框列表,並在我的網頁onclick事件的ImageButton的,點擊ImageButton的執行回傳和運行OnClick事件精細我可以使用javascript移動div並保留其回發能力嗎?

麻煩的是,我想移動的股利是在<form>這樣的第一個孩子,我可以讓它出現在模式窗口 - 我使用的prototype.js代碼這樣做...

document.observe("dom:loaded", function() { 

    if ($$('.CheckboxListContainer').length>0) {  

     var modalShadow = document.createElement('div'); 
     modalShadow.setAttribute("class", 'MyFormModalShadow'); 

     modalShadow.style.width = document.viewport.getWidth() + 'px'; 
     modalShadow.style.height = document.viewport.getHeight() + 'px'; 

     var modalDiv = document.createElement('div'); 
     modalDiv.setAttribute("class", 'MyFormModal'); 

     var checkboxesDiv = $$('.CheckboxListContainer')[0]; 
     checkboxesDiv.remove(); 

     modalDiv.appendChild(checkboxesDiv); 

     $$('form')[0].insert({top: modalShadow}); 
     $$('form')[0].insert({top: modalDiv}); 

     Event.observe(window, "resize", function() { 
      if ($$('.MyFormModalShadow').length>0) { 
       var modalShadow = $$('.MyFormModalShadow')[0] 
       modalShadow.style.width = document.viewport.getWidth() + 'px'; 
       modalShadow.style.height = document.viewport.getHeight() + 'px'; 
      } 
     }); 

    } 

}); 

...工作正常,但ImageButton的是沒有在回發時更長時間觸發我的OnClick事件。

有沒有辦法在DOM中移動我的div並保留它的回發能力?

+1

當你刪除行checkboxesDiv.remove();'?另外,當你點擊圖像按鈕時會發生什麼?頁面是否重新加載? –

+0

刪除checkboxesDiv.remove();不會改變代碼的結果(並且回發仍然沒有被觸發),我只是想確保元素在將其添加回其他地方之前被完全刪除。是的,當你點擊圖片按鈕時頁面會重新加載 – Steve

+0

快速測試表明我移動按鈕並沒有「毀掉」PostBack事件..你怎麼能告訴「ImageButton不再觸發我的OnClick事件」?你把斷點和調試? –

回答

2

首先,我不是很清楚爲什麼你需要將元素移動到表單的第一個子元素,以使其成爲模態。無論表單中的位置在哪裏,都可以創建任何div模式。最重要的想法是適當地控制絕對定位。

每個回發都由__DoPostBack()javascript函數觸發,所以除非您更改控件的ID,否則不應有任何移動控件的問題。

您的問題的一個可能的解決方案是從document.ready中的客戶端代碼中調用__DoPostBack()函數,並且這樣您可以完全控制表單提交。

4

快速回答,是的。下面的長答案:

如果你在談論ASP.NET WebForms,你的表單是否有runat="server"屬性和一個ID?如果您使用標準HTML,則表單上是否設置了methodaction屬性?

當您在瀏覽器中查看HTML源代碼時,如果表單看起來像:<form action="/your_post_back_page.html" method="post">,那麼這很好。在添加了模式對話框後,用FireBug 檢查表單,看看它是否是INSIDE表單標籤。如果是這樣,那很好。

是否複選框<input type="checkbox" /> have name屬性設置?是您的圖片按鈕<input type='submit' />還是<button>

如果滿足這些條件,則可能會有一個JavaScript事件(函數)連接到您的按鈕,返回false和/或回送回發。 JavaScript onclick事件一般需要返回true才能提交表單。瀏覽器的錯誤控制檯中是否有輸出?個人而言,我發現越來越多的純HTML(通過ASP.NET MVC)擊敗老派的ASP.NET WebForms,根據我的經驗,jQuery擁有比原型更好的感覺。使用jQuery模板創建一個模式對話框會很容易。你可以交換圖書館嗎?

相關問題