Javascript 如果文本的值无效,则从按钮中删除禁用的属性

Javascript 如果文本的值无效,则从按钮中删除禁用的属性,javascript,jquery,html,Javascript,Jquery,Html,我正在创建一个多步骤弹出表单,如果选择了输入字段,我只希望#next按钮处于活动状态。我已经设法让它工作的复选框和电台领域,但出于某种原因,它不工作的文本和文本区域领域 我使用了与复选框和无线电字段相同的代码,但没有选中is(:checked)我的目标是.val()!=“” 测试时,仅当我转到.multi-step部分,填写文本字段,返回上一个屏幕,然后返回包含该字段的部分时,它才起作用。我认为活跃的班级仍然在看上一节 在禁用按钮之前,是否有方法检查当前活动屏幕上的输入[type=“text”]

我正在创建一个多步骤弹出表单,如果选择了输入字段,我只希望
#next
按钮处于活动状态。我已经设法让它工作的复选框和电台领域,但出于某种原因,它不工作的文本和文本区域领域

我使用了与复选框和无线电字段相同的代码,但没有选中
is(:checked)
我的目标是
.val()!=“”

测试时,仅当我转到
.multi-step部分
,填写文本字段,返回上一个屏幕,然后返回包含该字段的部分时,它才起作用。我认为活跃的班级仍然在看上一节

在禁用按钮之前,是否有方法检查当前活动屏幕上的
输入[type=“text”]
输入[type=“textarea”]
字段

链接到完整的弹出式表单:

$(函数(){
$('.multi-form actions button')。在('click',function()上{
var el=$(this.attr('id');
var active=$('.multi-step section.active');
active.add(active.sibbins()).removeClass('active');
如果(el=='prev'){
active=active.prev('.multi-step section').addClass('active');
$('#progressbar>span').css({
“宽度”:$(“#进度条>跨度”).width()/$(“#进度条”).width()*100-SectionProgressBar+'%
});
}else if(el=‘next’){
active=active.next('.multi-step section').addClass('active');
$('#progressbar>span').css({
“宽度”:$(“#进度条>跨度”).width()/$(“#进度条”).width()*100+sectionProgress+'%
});
}
如果((活动).find(“输入[type='radio'],输入[type='checkbox']”)是(':checked')){
$(“#下一步”).removeAttr('disabled');
}else if((活动).find(“输入[type='text'],输入[type='textarea']”)。val()!=“”){
console.log('notempty');
$(“#下一步”).removeAttr('disabled');
}否则{
$('#next').attr('disabled','disabled');
}
if(active.is(“:not(:first child)”){
$('#prev').show();
}否则{
$('#prev').hide();
}
if(active.is(“:last child”)){
$(“#下一步”).hide();
$(“#提交”).show();
}否则{
$(“#下一步”).show();
$(“#提交”).hide();
}
});
});

问题1
阁楼
车库天花板
地板
天花板
钉墙
专项

问题2

问题3 最多30平方米 30-60平方米 60-100平方米 超过100平方米

问题4 准备好了吗 在接下来的几个月里 几个月后

问题5 国内的 商业的 建设

问题6

返回继续
你是说

var-active=$('.multi-step-section.active');
var dis=active.find(“input[type='radio']:checked”)。长度==0;
dis=dis&&active.find(“输入[type='checkbox']:选中”)。长度==0;
dis=dis&&active
.find(“输入:文本,文本区域”)
.map(函数(idx,元素){
return$(elem).val()| | null;//注意0(零)的有效值
}).get().length==0;
$('next').prop('disabled',dis);
progressbar的代码:

  $('#pBar').prop("max",$('.multi-step-section').length).val(0); // loading
  ...
  $('#pBar').val(active.index()); // each click on the prev/next
运行示例

//可重用函数
函数checkInput(){
var active=$('.multi-step section.active');
var dis=active.find(“input[type='radio']:checked”)。长度==0;
dis=dis&&active.find(“输入[type='checkbox']:选中”)。长度==0;
dis=dis&&active
.find(“输入:文本,文本区域”)
.map(函数(idx,元素){
返回$(elem).val()| | null;
}).get().length==0;
$('next').prop('disabled',dis);
}
$(函数(){
$(“:input”).on(“input”,checkInput);//任何输入
$('#pBar').prop(“max”,$('.multi-step section').length.val(0);
$('.multi-form actions button')。在('click',function()上{
var el=$(this.attr('id');
var active=$('.multi-step section.active');
变量计数=$('.multi-step section')。长度;
active.add(active.sibbins()).removeClass('active');
如果(el=='prev'){
active=active.prev('.multi-step section').addClass('active');
}else if(el=‘next’){
active=active.next('.multi-step section').addClass('active');
}
$('#pBar').val(active.index());
checkInput();//如果需要,请重置“继续”
if(active.is(“:not(:first child)”){
$('#prev').show();
}否则{
$('#prev').hide();
}
if(active.is(“:last child”)){
$(“#下一步”).hide();
$(“#提交”).show();
}否则{
$(“#下一步”).show();
$(“#提交”).hide();
}
});
});
。多步骤部分{
显示:无
}
.主动{
显示:块
}
#progressbar{背景色:绿色;}

问题1
阁楼
车库天花板
地板
天花板
钉墙
专项

问题2

问题3 最多30平方米 30-60平方米 60-100平方米 超过100平方米

问题4 准备好了吗 在接下来的几个月里 几个月后

问题5 国内的 商业的 建设

问题6

返回继续
70%
你是说

var active=$('.mult