我在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>
答案 0 :(得分:2)
听起来像最初加载页面时,div被隐藏,然后单击以显示div并填写表单。在表单提交时,页面会重新加载,并且当您希望它仍然显示时,div会重新加载为隐藏。
(假设最初隐藏的div是在CSS中控制的,因为我在提供的代码中没有看到它)
如果是这种情况,我认为你有两种选择..
在构建对表单提交的响应时,在服务器端处理它,确保您正在更改要在返回的响应中显示的div
如果可能的话,在客户端处理它,如果表单在重新加载后显示填充的值,但在页面初始加载时从不具有值,您可以编写一些JS来显示div如果表格中有值。
如果您回到具有相同数据的同一页面并希望它看起来一样,我还会看到页面没有在表单提交上完全重新加载。也许你应该通过AJAX提交而不是重新加载页面?
答案 1 :(得分:0)
你太努力了哈哈
$(function() {
$('.Mbox').hide();
$("#Mbutton").click(function(e) {
$('.Mbox').show();
});
});
似乎^^会做你要求的,如果不解释更多
答案 2 :(得分:0)
如果我理解正确,那么在提交表单后,你试图隐藏包装表单的DIV,看起来好像你把它变得更复杂了。
$("#Mbutton").click({
$(".Mbox").fadeOut(400);
});
点击#Mbutton
后,这会使DIV .Mbox淡出