javascript - JQ的两段代码方法一样,元素不一样,如何简化代码
本文介绍了javascript - JQ的两段代码方法一样,元素不一样,如何简化代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
<div class="innercontent innercontent-a">
<div class="wrap-usermobile">
<label class="user-info">账 户</label>
<input type="tel" name="mobile" maxlength="11" value="" >
</div>
<div class="submit-btn">
<button type="button" class="btn-stepa" >下一步</button>
</div>
</div>
<div class="innercontent innercontent-b" >
<div class="wrap-codep">
<label class="user-info">验证码</label>
<input type="text" name="codep" >
</div>
<div class="submit-btn">
<button type="button" class="btn-stepb">下一步</button>
</div>
</div>
$("input[name='mobile']").on('input propertychange',function(){
var mobile = $(this).val();
if(mobile!=""){
$(".btn-stepa").removeAttr("disabled").css('background','#6f60cf');
}
else{
$(".btn-stepa").attr('disabled',"disabled").css('background','#a396f7');
}
});
$("input[name='codep']").on('input propertychange',function(){
var codep = $(this).val();
if(codep!=""){
$(".btn-stepb").removeAttr("disabled").css('background','#6f60cf');
}
else{
$(".btn-stepb").attr('disabled',"disabled").css('background','#a396f7');
}
});
本人新手,请不要给负分哦~
解决方案
$("input[name='mobile'],input[name='codep']").on('input propertychange',function(){
var $this = $(this),
val = $this.val(),
$btn = $this.closest(".innercontent").find("button"); //这里的button标签最好有个类名来限制一下,比如button.btn-step,不然如果有多个button标签就会有问题。
if(val!=""){
$btn.prop('disabled',false).css('background','#6f60cf');
}else{
$btn.prop('disabled',true).css('background','#a396f7');
}
});
attr和prop的用法是不同的,你可以看看jquery的官方文档有解释英文版,这是中文版。
关于你在答案一种的评论,你的这个.btn-stepa和.btn-stepb是可以优化的,前提是你让我看一下你的html结构。
这篇关于javascript - JQ的两段代码方法一样,元素不一样,如何简化代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文