通过js控制页面按钮的置灰与清零
页面效果:
要求:选择了最小分期或最大分期两个下拉框,将分期期数的多选框置灰并清除已经选中项,
选中了多选框分期期数,,将最大分期与最小分期置灰并清零.
此三个目标框的代码为:
<div class="col-sm-6">
<#select id="minPeriod" name="最小分期" underline="true" value="">
<option value=""></option>
<option value="3">3</option>
<option value="6">6</option>
<option value="9">9</option>
<option value="12">12</option>
<option value="18">18</option>
<option value="24">24</option>
<option value="36">36</option>
</#select>
<#select id="maxPeriod" name="最大分期" underline="true" value="">
<option value=""></option>
<option value="3">3</option>
<option value="6">6</option>
<option value="9">9</option>
<option value="12">12</option>
<option value="18">18</option>
<option value="24">24</option>
<option value="36">36</option>
</#select>
</div>
<div class="col-sm-9">
<label>分期期数</label>
<input name="allowPeriod" id="allowPeriod" type="checkbox" value="3"/>3期
<input name="allowPeriod" id="allowPeriod" type="checkbox" value="6"/>6期
<input name="allowPeriod" id="allowPeriod" type="checkbox" value="9"/>9期
<input name="allowPeriod" id="allowPeriod" type="checkbox" value="12"/>12期
<input name="allowPeriod" id="allowPeriod" type="checkbox" value="18"/>18期
<input name="allowPeriod" id="allowPeriod" type="checkbox" value="24"/>24期
<input name="allowPeriod" id="allowPeriod" type="checkbox" value="36"/>36期
</div>
</div>
实现需求效果的js代码:
//点击触发:选了最小分期,分期期数只读且全部清除选中
$("#minPeriod").click(function(){
setAllowPeriodDisabledByMin();
});
//点击触发:选了最大分期,分期期数只读且全部清除选中
$("#maxPeriod").click(function(){
setAllowPeriodDisabledByMax();
});
function setAllowPeriodDisabledByMin(){
if(!$("#minPeriod").val()==''){
$("input[id='allowPeriod']").each(function(){
$(this).attr("checked",false);
$(this).attr("disabled",true);
});
}else{
$("input[id='allowPeriod']").each(function(){
$(this).attr("disabled",false);
});
}
}
function setAllowPeriodDisabledByMax(){
if(!$("#maxPeriod").val()==''){
$("input[id='allowPeriod']").each(function(){
$(this).attr("checked",false);
$(this).attr("disabled",true);
});
}else{
$("input[id='allowPeriod']").each(function(){
$(this).attr("disabled",false);
});
}
}
//点击触发:选了分期期数,最大分期和最小分期两个下拉框只读且置空
$("input[id='allowPeriod']").click(function(){
setMinPeriodAndMaxPeriodDisabled();
});
function setMinPeriodAndMaxPeriodDisabled(){
var a = 0, b = 0;//b可以统计未选中的项,无用可以删除.
$("input[name='allowPeriod']").each(function(){
if($(this).is(':checked')){
a++;
}else{
b++;
}
});
if(a == 0){
$("select[id='minPeriod']").attr("disabled",false);
$("select[id='maxPeriod']").attr("disabled",false);
}else{
$("select[id='minPeriod']").val('');
$("select[id='maxPeriod']").val('');
$("select[id='minPeriod']").attr("disabled",true);
$("select[id='maxPeriod']").attr("disabled",true);
} }
另外,点击提交时,对多选框的选中项进行收集处理,将所有的选中项拼接成一个数组,直接传递:
var allowPeriods = document.getElementsByName("allowPeriod");
var allowPeriodArray = [];
for (k in allowPeriods) {
if (allowPeriods[k].checked){
allowPeriodArray.push(allowPeriods[k].value);
}
}
注意点:将一个目标对象置灰时:$("select[id='minPeriod']").attr("disabled",true)
不置灰时:$("select[id='minPeriod']").attr("disabled",false);
此处使用true和false,不能带引号,如果使用引号,true可以起作用,因为,disabled属性,只要有值就会起作用,置灰;但是,使用带引号的"false"时,仍然置灰!
此处使用jQuery选择器.click,直接触发,也可以在目标输入框直接加,只是比较麻烦.