您的位置:首页 > Web前端 > JavaScript

通过js控制页面按钮的置灰与清零

2018-04-08 14:34 543 查看
页面效果:


要求:选择了最小分期或最大分期两个下拉框,将分期期数的多选框置灰并清除已经选中项,
        选中了多选框分期期数,,将最大分期与最小分期置灰并清零.
此三个目标框的代码为:
         <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,直接触发,也可以在目标输入框直接加,只是比较麻烦.     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息