jQuery在提交时停止隐藏div

时间:2012-07-10 03:28:36

标签: javascript jquery

我在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>

3 个答案:

答案 0 :(得分:2)

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

(假设最初隐藏的div是在CSS中控制的,因为我在提供的代码中没有看到它)

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

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

  2. 如果可能的话,在客户端处理它,如果表单在重新加载后显示填充的值,但在页面初始加载时从不具有值,您可以编写一些JS来显示div如果表格中有值。

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

答案 1 :(得分:0)

你太努力了哈哈

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

似乎^^会做你要求的,如果不解释更多

答案 2 :(得分:0)

如果我理解正确,那么在提交表单后,你试图隐藏包装表单的DIV,看起来好像你把它变得更复杂了。

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

点击#Mbutton

后,这会使DIV .Mbox淡出