0

我有一个简单的显示/隐藏 div 和 div 上的表单,但是当我提交表单时,div 在重新加载时再次隐藏,我如何停止这种行为?

脚本:

$(function() {
  $('.Mbox').hide().click(function(e) {
    e.stopPropagation();
  });      
  $("#Mbutton").click(function(e) {
    $('.Mbox').animate({ opacity: "toggle" });
    e.preventDefault();
  });

});

分区:

<li><div class="Mbox"><input type="text" id="conversation_username" class="span5"  name="conversation_participant[nome]" placeholder="Para: Nome"/>
 <%= text_area :message, :body, :class => "span5", :rows => 5, :placeholder => "Mensagem" %>
 <%= f.button "Send", :class => "botao" %></div></li>
4

3 回答 3

2

听起来就像最初加载页面时,div 是隐藏的,然后单击以显示 div 并填写表单。在提交表单时,页面会重新加载,并且 div 会在您希望它仍然显示时重新加载为隐藏状态。

(假设最初隐藏的 div 是在 CSS 中控制的,因为我在提供的代码中的其他地方看不到它)

如果是这种情况,我认为您有两个选择..

  1. 在服务器端处理它,在构建对表单提交的响应时,确保您正在更改要在返回的响应中显示的 div

  2. 如果可能的话在客户端处理它,例如,如果表单在重新加载后显示填充的值,但在页面最初加载时从来没有值,你可以编写一些 JS 来显示 div 如果有值在形式。

如果您返回到具有相同数据的同一页面并希望它看起来一样,我还会考虑让页面在表单提交时不完全重新加载。也许您应该通过 AJAX 提交而不重新加载页面?

于 2012-07-10T03:47:37.623 回答
0

如果我对您的理解正确,您正在尝试在提交表单后隐藏包装表单的 DIV,看起来好像您使它变得更加复杂,而不是需要。

$("#Mbutton").click({
     $(".Mbox").fadeOut(400);
});

单击#M按钮后,这应该会使 DIV .Mbox 淡出

于 2012-07-10T03:37:09.640 回答
0

你太努力了哈哈

$(function() {
    $('.Mbox').hide();
    $("#Mbutton").click(function(e) {
        $('.Mbox').show();
    });
 });

好像^^会做你要求的,如果不解释更多

于 2012-07-10T03:35:14.463 回答