我尝试将我的登录表单放在模态中,并将data-dismiss =“modal”添加到提交按钮。模态被成功解除,但POST方法似乎没有“触发”,页面保持不变。还有其他人试过把一个表单放在一个模态中并让它工作吗?
<div class="modal hide fade" id="signin-register" tabindex="-1" role="dialog" aria-labelledby="image-modal-label" aria-hidden="true">
<div class="modal-body">
<div class="row-fluid">
<div class="span12">
<div class="span6">
<div class="row-fluid">
<div class="span12">
<legend>Sign in</legend>
<form class="navbar-form pull-right" method="POST" action="login/">
<input type="hidden" name="a" value="validate" />
<input class="input-small" type="text" placeholder="Username" name="username">
<input class="input-small" type="password" placeholder="Password" name="password">
<button class="btn btn-small btn-info" type="submit" class="btn2" data-dismiss="modal"><strong>sign in</strong></button>
</form>
<legend>Register</legend>
<form action="" method="POST" id="register_form">
<label>Username:*</label><input class="input-small" type="text" name="username" placeholder="Username" />
<label>Password:*</label><input class="input-small" type="password" name="password" placeholder="Password" />
<label>Email:*</label><input type="text" name="email" placeholder="E-mail" /><br>
<input type="submit" name="a" value="Register" data-dismiss="modal"/>
</form>
</div>
</div>
</div>
<div class="span6">
<div class="row-fluid">
<div class="span12">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
我双重确认登录表单在模态之外工作。
答案 0 :(得分:4)
将data-dismiss
分配给链接或按钮将拦截该按钮的click事件并防止其冒泡。如果您将data-dismiss
放在表单提交按钮上,则实际的“提交”操作将永远不会被触发,并且不会提交表单。
如果您要通过AJAX提交表单,请让成功事件触发表单的解雇。如果您正在进行传统的表单发布,请不要担心因为页面将重新加载或重定向而忽略该模式。
答案 1 :(得分:2)
带有data-dismiss="modal"
的元素应该用于解除模态,任何默认行为(如提交表单)都将被覆盖。
如果您需要提交表单,请不要在提交按钮上使用此属性。就这么简单。
答案 2 :(得分:1)
很容易。您不需要提交的data-dismiss属性。我正在使用MVC4,并且经常这样做:
<div id="mdlProceed" class="modal hide fade" data-backdrop="static" data-keyboard="false">
<div class="modal-header">
<h3>Header</h3>
</div>
<div class="modal-body">
Body
</div>
@using (Html.BeginForm(null, null,
new { area = "MyArea", controller = "MyController", action = "MyAction" }, FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="modal-footer">
<input type="button" name="cancel" id="cancel" accesskey="c" class="btn btn-warning" data-dismiss="modal" value="Cancel" alt="Return" />
<input type="submit" name="start" id="start" accesskey="n" class="btn btn-primary" data-loading-text="Please Wait..." value="Continue" />
</div>
}
</div>
答案 3 :(得分:-1)
我试过了,它工作得很好!
<div style="width:800px" class="modal hide fade">
<div class="modal-header">Some header
</div>
<div class="modal-body">Some body
<input...... fields..... >
</div>
<div class="modal-footer">
<input class="btn btn-primary" value="Submit" onclick="SubmitData();">
<a href="#" class="btn" data-dismiss="modal" >Close</a>
</div>
</div>