模态中的表单元素

时间:2012-11-16 19:08:09

标签: jquery twitter-bootstrap

我尝试将我的登录表单放在模态中,并将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>

我双重确认登录表单在模态之外工作。

4 个答案:

答案 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>