隐藏时如何删除 Bootstrap 模态上的 iCheck 检查状态?
How to remove iCheck checked state on Bootstrap modal when hidden?
我尝试删除 Bootstrap 模态上的 iCheck checked
状态,但我尝试了很多次,都失败了。
我将 iCheck 用于输入类型复选框和单选。
所以这是模态代码:
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<form role="form" id="form-swab" class="form-horizontal" action="tambah">
<div class="box-body">
<div class="form-group">
<label for="swab_parameter" class="col-sm-3 control-label">Parameter Uji</label>
<div class="col-sm-8">
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_tpc" value="TPC">
TPC
</label>
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_coliform" value="Coliform">
Coliform
</label>
</div>
</div>
<div class="form-group" id="hasil_swab_tpc">
<label for="swab_tpc" class="col-sm-3 control-label">Hasil TPC</label>
<div class="col-sm-8">
<input type="text" id="swab_tpc" name="swab_tpc" class="form-control" placeholder="Hasil Analisa TPC">
</div>
</div>
<div class="form-group" id="hasil_swab_coliform">
<label for="swab_coliform" class="col-sm-3 control-label">Hasil Coliform</label>
<div class="col-sm-8">
<input type="text" id="swab_coliform" name="swab_coliform" class="form-control" placeholder="Hasil Analisa Coliform">
</div>
</div>
</div>
<!-- /.box-body -->
<input type="hidden" name="swab_ID" id="swab_ID" />
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" id="button-close-swab" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="submit-swab">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal swab -->
我用 hashchange
切换模式(jquery.ba-bbq.min.js
来自 https://github.com/cowboy/jquery-bbq)。此 js 加载在页脚中。
Javascript 代码(加载页脚为 site.js
):
var path = window.location.pathname;
var host = window.location.hostname;
$(function(){
$(window).hashchange(function(){
var hash = $.param.fragment();
if(hash == 'tambah'){
if(path.search('mikro/swab') > 0){
$('#myModal .modal-header .modal-title').text('Input Data Swab');
$('#myModal .modal-footer #submit-swab').text('Simpan');
$('#myModal #form-swab').attr('action','tambah');
}
// other else if
}
// other else if
});
$(window).trigger('hashchange');
$('#myModal').on('hidden.bs.modal', function(){
window.history.pushState(null,null,path);
$('#myModal form').find("input[type=text], input[type=email], input[type=password], textarea, select").val("");
$('#myModal form').show();
$('input').iCheck('uncheck');
});
});
$('#swab_parameter_tpc, #swab_parameter_coliform').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
$('#swab_parameter_tpc').on('ifChecked', function(event){
$('#hasil_swab_tpc').show('slow');
});
$('#swab_parameter_coliform').on('ifChecked', function(event){
$('#hasil_swab_coliform').show('slow');
});
$('#swab_parameter_coliform').on('ifUnchecked', function(event){
$('#hasil_swab_coliform').hide('slow');
});
$('#swab_parameter_ym').on('ifUnchecked', function(event){
$('#hasil_swab_ym').hide('slow');
});
问题是:当我打开模态框时,选中复选框并关闭模态框,然后再次打开模态框,复选框仍处于checked
状态,应该回到取消选中状态。我尝试使用 $('input').iCheck('uncheck');
但没有用。
我的代码有问题吗?
这是一个有效的片段,不确定为什么你的代码在你这边不起作用,但你的代码在这里工作。试着回顾一下你是如何切换你的模态的。并尝试指定要用 iCheck
初始化的 <input>
元素
$('#swab_parameter_tpc, #swab_parameter_coliform').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
$('#myModal').on('hidden.bs.modal', function(){
$('#myModal form').find("input[type=text], input[type=email], input[type=password], textarea, select").val("");
$('#myModal form').show();
$('input').iCheck('uncheck');
});
$('#swab_parameter_tpc').on('ifChecked', function(event){
$('#hasil_swab_tpc').show('slow');
});
$('#swab_parameter_coliform').on('ifChecked', function(event){
$('#hasil_swab_coliform').show('slow');
});
$('#swab_parameter_coliform').on('ifUnchecked', function(event){
$('#hasil_swab_coliform').hide('slow');
});
$('#swab_parameter_ym').on('ifUnchecked', function(event){
$('#hasil_swab_ym').hide('slow');
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/iCheck/1.0.2/skins/all.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/iCheck/1.0.2/icheck.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<a class="btn btn-info" data-toggle="modal" data-target="#myModal">Try me</a>
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<form role="form" id="form-swab" class="form-horizontal" action="tambah">
<div class="box-body">
<div class="form-group">
<label for="swab_parameter" class="col-sm-3 control-label">Parameter Uji</label>
<div class="col-sm-8">
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_tpc" value="TPC">
TPC
</label>
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_coliform" value="Coliform">
Coliform
</label>
</div>
</div>
<div class="form-group" id="hasil_swab_tpc">
<label for="swab_tpc" class="col-sm-3 control-label">Hasil TPC</label>
<div class="col-sm-8">
<input type="text" id="swab_tpc" name="swab_tpc" class="form-control" placeholder="Hasil Analisa TPC">
</div>
</div>
<div class="form-group" id="hasil_swab_coliform">
<label for="swab_coliform" class="col-sm-3 control-label">Hasil Coliform</label>
<div class="col-sm-8">
<input type="text" id="swab_coliform" name="swab_coliform" class="form-control" placeholder="Hasil Analisa Coliform">
</div>
</div>
</div>
<!-- /.box-body -->
<input type="hidden" name="swab_ID" id="swab_ID" />
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" id="button-close-swab" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="submit-swab">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal swab -->
问题已解决。
问题出现在javascript,我尝试重新排序脚本,就像这样:
$('#myModal').on('hidden.bs.modal', function(){
$('input').iCheck('uncheck');
window.history.pushState(null,null,path);
$('#myModal form').find("input[type=text], input[type=email], input[type=password], textarea, select").val("");
$('#myModal form').show();
});
脚本运行良好。
我尝试删除 Bootstrap 模态上的 iCheck checked
状态,但我尝试了很多次,都失败了。
我将 iCheck 用于输入类型复选框和单选。
所以这是模态代码:
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<form role="form" id="form-swab" class="form-horizontal" action="tambah">
<div class="box-body">
<div class="form-group">
<label for="swab_parameter" class="col-sm-3 control-label">Parameter Uji</label>
<div class="col-sm-8">
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_tpc" value="TPC">
TPC
</label>
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_coliform" value="Coliform">
Coliform
</label>
</div>
</div>
<div class="form-group" id="hasil_swab_tpc">
<label for="swab_tpc" class="col-sm-3 control-label">Hasil TPC</label>
<div class="col-sm-8">
<input type="text" id="swab_tpc" name="swab_tpc" class="form-control" placeholder="Hasil Analisa TPC">
</div>
</div>
<div class="form-group" id="hasil_swab_coliform">
<label for="swab_coliform" class="col-sm-3 control-label">Hasil Coliform</label>
<div class="col-sm-8">
<input type="text" id="swab_coliform" name="swab_coliform" class="form-control" placeholder="Hasil Analisa Coliform">
</div>
</div>
</div>
<!-- /.box-body -->
<input type="hidden" name="swab_ID" id="swab_ID" />
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" id="button-close-swab" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="submit-swab">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal swab -->
我用 hashchange
切换模式(jquery.ba-bbq.min.js
来自 https://github.com/cowboy/jquery-bbq)。此 js 加载在页脚中。
Javascript 代码(加载页脚为 site.js
):
var path = window.location.pathname;
var host = window.location.hostname;
$(function(){
$(window).hashchange(function(){
var hash = $.param.fragment();
if(hash == 'tambah'){
if(path.search('mikro/swab') > 0){
$('#myModal .modal-header .modal-title').text('Input Data Swab');
$('#myModal .modal-footer #submit-swab').text('Simpan');
$('#myModal #form-swab').attr('action','tambah');
}
// other else if
}
// other else if
});
$(window).trigger('hashchange');
$('#myModal').on('hidden.bs.modal', function(){
window.history.pushState(null,null,path);
$('#myModal form').find("input[type=text], input[type=email], input[type=password], textarea, select").val("");
$('#myModal form').show();
$('input').iCheck('uncheck');
});
});
$('#swab_parameter_tpc, #swab_parameter_coliform').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
$('#swab_parameter_tpc').on('ifChecked', function(event){
$('#hasil_swab_tpc').show('slow');
});
$('#swab_parameter_coliform').on('ifChecked', function(event){
$('#hasil_swab_coliform').show('slow');
});
$('#swab_parameter_coliform').on('ifUnchecked', function(event){
$('#hasil_swab_coliform').hide('slow');
});
$('#swab_parameter_ym').on('ifUnchecked', function(event){
$('#hasil_swab_ym').hide('slow');
});
问题是:当我打开模态框时,选中复选框并关闭模态框,然后再次打开模态框,复选框仍处于checked
状态,应该回到取消选中状态。我尝试使用 $('input').iCheck('uncheck');
但没有用。
我的代码有问题吗?
这是一个有效的片段,不确定为什么你的代码在你这边不起作用,但你的代码在这里工作。试着回顾一下你是如何切换你的模态的。并尝试指定要用 iCheck
<input>
元素
$('#swab_parameter_tpc, #swab_parameter_coliform').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
$('#myModal').on('hidden.bs.modal', function(){
$('#myModal form').find("input[type=text], input[type=email], input[type=password], textarea, select").val("");
$('#myModal form').show();
$('input').iCheck('uncheck');
});
$('#swab_parameter_tpc').on('ifChecked', function(event){
$('#hasil_swab_tpc').show('slow');
});
$('#swab_parameter_coliform').on('ifChecked', function(event){
$('#hasil_swab_coliform').show('slow');
});
$('#swab_parameter_coliform').on('ifUnchecked', function(event){
$('#hasil_swab_coliform').hide('slow');
});
$('#swab_parameter_ym').on('ifUnchecked', function(event){
$('#hasil_swab_ym').hide('slow');
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/iCheck/1.0.2/skins/all.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/iCheck/1.0.2/icheck.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<a class="btn btn-info" data-toggle="modal" data-target="#myModal">Try me</a>
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<form role="form" id="form-swab" class="form-horizontal" action="tambah">
<div class="box-body">
<div class="form-group">
<label for="swab_parameter" class="col-sm-3 control-label">Parameter Uji</label>
<div class="col-sm-8">
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_tpc" value="TPC">
TPC
</label>
<label>
<input type="checkbox" name="swab_parameter[]" id="swab_parameter_coliform" value="Coliform">
Coliform
</label>
</div>
</div>
<div class="form-group" id="hasil_swab_tpc">
<label for="swab_tpc" class="col-sm-3 control-label">Hasil TPC</label>
<div class="col-sm-8">
<input type="text" id="swab_tpc" name="swab_tpc" class="form-control" placeholder="Hasil Analisa TPC">
</div>
</div>
<div class="form-group" id="hasil_swab_coliform">
<label for="swab_coliform" class="col-sm-3 control-label">Hasil Coliform</label>
<div class="col-sm-8">
<input type="text" id="swab_coliform" name="swab_coliform" class="form-control" placeholder="Hasil Analisa Coliform">
</div>
</div>
</div>
<!-- /.box-body -->
<input type="hidden" name="swab_ID" id="swab_ID" />
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" id="button-close-swab" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="submit-swab">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal swab -->
问题已解决。
问题出现在javascript,我尝试重新排序脚本,就像这样:
$('#myModal').on('hidden.bs.modal', function(){
$('input').iCheck('uncheck');
window.history.pushState(null,null,path);
$('#myModal form').find("input[type=text], input[type=email], input[type=password], textarea, select").val("");
$('#myModal form').show();
});
脚本运行良好。