2011-09-11 23 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模板创建一个模式对话框会很容易。你可以交换图书馆吗?

相关问题