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 »</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 -->
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)