如何为Bootstrap模式窗口指定主要和辅助操作?

Che*_*Pez 10 javascript forms jquery twitter-bootstrap

我正在使用Twitter的Bootstrap模态功能.当有人点击我的表单上的提交时,我正在测试他们是否检查了任何可用的选项:

$('form').submit(function(event) {
        var $target = $('.column').find(':checkbox');                                                        
        if( !$target.is(':checked') ){ // if none of the sub-options are checked
            event.preventDefault();
            $('#my-modal').modal({
                show: 'true',
                backdrop: 'true',
                keyboard: 'true'
            });
        }                                       
    });
Run Code Online (Sandbox Code Playgroud)

...并显示模态窗口,如果他们没有.然后我喜欢模态上的"主要"按钮继续表单提交,而次要按钮则只需关闭模态窗口.

我确信这应该是相当简单的,但我目前对jQuery的了解只是在复制/粘贴级别,文档没有给出如何执行此操作的示例.

我给自己定了一个什么样的jsfiddle我在这里 -谢谢.

编辑 - 我在下面添加了一些代码(感觉有点hacky),它会在单击辅助按钮时关闭模态窗口.单击主按钮时仍不确定如何使表单继续运行:

$('#my-modal .secondary').click(function() {
    $('#my-modal').modal({
        show: 'false'
    });
});
Run Code Online (Sandbox Code Playgroud)

现在的问题归结为:"有没有一种简单的方法来告诉表单"好的,一旦点击主按钮就继续"?

iwa*_*bed 13

好吧,问题是,现在Bootstrap没有任何适当的回调动作按钮.因此,您必须以迂回的方式执行此操作并创建自己的.希望这可以帮助!

这是一个JS小提琴显示它的工作:http: //jsfiddle.net/iwasrobbed/rYLWz/3/

以下是代码:

HTML文件

<form>
<ul class="inputs-list">
    <li>
      <label>
        <input type="checkbox" name="optionsCheckboxes" value="option1" />
        <span>Option 1</span>
      </label>
    </li>
    <li>
      <label>
        <input type="checkbox" name="optionsCheckboxes" value="option2" />
        <span>Option 2</span>
      </label>
    </li>
</ul>
<div class="actions">
    <a href="#" class="save-button btn large primary">Save changes &raquo;</a>

    <!-- Hide the real submit button /-->
    <input type="submit" class="hidden">
</div>
</form>

<div id="my-modal" class="modal hide fade">
    <div class="modal-header">
        <a href="#" class="close">&times;</a>
        <h3>Are you sure?</h3>
    </div>
    <div class="modal-body">
        <p>You haven&rsquo;t selected any options.</p>
    </div>
    <div class="modal-footer">
        <a href="#" class="okay-button btn primary">Okay &raquo;</a>
        <a href="#" class="go-back-button btn secondary">Go back</a>
    </div>
</div> <!-- /modal -->
Run Code Online (Sandbox Code Playgroud)

JS档案

$(document).ready(function() {

    // Verify if checkboxes were checked.
    // If they weren't, show a modal
    $('a.save-button').click(function() {
        if ($("input:checked").length === 0) {

            $('#my-modal').modal({
                show: 'true',
                backdrop: 'true',
                keyboard: 'true'
            });
        } else {
            $('form').submit(); 
        }

        // prevent click jump
        return false;
    });

    // Let's attach a listener on form submission
    $('form').submit(function() {
        alert('We submitted the form!');
    });

    // Hide modal if "Go back" is pressed
    $('#my-modal .go-back-button').click(function() {
        $('#my-modal').modal('hide');
        alert('We went back to the form');
    });

    // Hide modal if "Okay" is pressed
    $('#my-modal .okay-button').click(function() {
        $('#my-modal').modal('hide');
        $('form').submit();
    });

});
Run Code Online (Sandbox Code Playgroud)

我还添加了一些CSS:

ul.inputs-list li {
    margin-left: 10px;
}
.hidden {
    display: none   
}
Run Code Online (Sandbox Code Playgroud)