我正在使用Twitter's Bootstrap modal functionality。当有人点击我的表单上的提交时,我正在测试他们是否检查了任何可用的选项:
$('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'
});
}
});
...并显示模态窗口,如果他们没有。然后我喜欢模态上的“主要”按钮继续表单提交,而次要按钮则只需关闭模态窗口。
我确信这应该是相当简单的,但我目前对jQuery的了解只是在复制/粘贴级别,文档没有给出如何执行此操作的示例。
我已经设置了一个jsFiddle,我有here - 谢谢。
编辑 - 我在下面添加了一些代码(感觉有点hacky),它会在点击辅助按钮时关闭模态窗口。单击主按钮时仍然不确定如何使表单继续:
$('#my-modal .secondary').click(function() {
$('#my-modal').modal({
show: 'false'
});
});
问题现在归结为:'有一种简单的方法可以告诉表单“好了,一旦点击主按钮就继续”吗?'
答案 0 :(得分: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 »</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">×</a>
<h3>Are you sure?</h3>
</div>
<div class="modal-body">
<p>You haven’t selected any options.</p>
</div>
<div class="modal-footer">
<a href="#" class="okay-button btn primary">Okay »</a>
<a href="#" class="go-back-button btn secondary">Go back</a>
</div>
</div> <!-- /modal -->
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();
});
});
我还添加了一些CSS:
ul.inputs-list li {
margin-left: 10px;
}
.hidden {
display: none
}