Javascript 使用Select选项更改DOM并检查必填字段的数量
为了成功提交表单,需要填写一个包含一定数量必填字段的网页。 required字段的最大指示器是它有一个*并且它的标签中有一个类“required”。 当我们更改下拉列表值时,所需字段的数量会更改。我已经编写了一些javascript和jquery代码来更改下拉值,然后检查必填字段的数量,但出于某种原因(很可能DOM更改需要时间,代码在此之前执行,所以实际上必填字段数量的更改没有反映在页面中)。但是,如果我手动更改下拉列表值,然后运行checkRequired()函数,它可以正常工作,但我希望自动执行该过程。我怎样才能做到这一点Javascript 使用Select选项更改DOM并检查必填字段的数量,javascript,jquery,html,Javascript,Jquery,Html,为了成功提交表单,需要填写一个包含一定数量必填字段的网页。 required字段的最大指示器是它有一个*并且它的标签中有一个类“required”。 当我们更改下拉列表值时,所需字段的数量会更改。我已经编写了一些javascript和jquery代码来更改下拉值,然后检查必填字段的数量,但出于某种原因(很可能DOM更改需要时间,代码在此之前执行,所以实际上必填字段数量的更改没有反映在页面中)。但是,如果我手动更改下拉列表值,然后运行checkRequired()函数,它可以正常工作,但我希望自动
var计数=0;
var allRequired=[];//页面中必填字段的总数
var newRequired=[];//必填字段数量的更改
$('select')。每个(函数(){
var id=$(this.attr('id');
$('#'+id+'选项')。每个(函数(){
$(this.attr('selected','selected');
如果(计数=0){
getAllRequiredFields();
}
否则{
设置超时(()=>{
checkRequired();
for(让index=0;index }
刚刚添加的更改事件修复了我的问题
$('#'+id+' option').each(function() {
$(this).attr('selected','selected');
$('#'+id).change();
if(count == 0){
getAllRequiredFields();
}
else{
setTimeout(() => {
checkRequired();
for (let index = 0; index < allRequired.length; index++) {
console.log('for else',allRequired[index]);
if(!newRequired.includes(allRequired[index])){
console.log('allRequired',allRequired[index]);
}
}
}, 3000);
}
count++;
})
$('#'+id+'选项')。每个(函数(){
$(this.attr('selected','selected');
$('#'+id).change();
如果(计数=0){
getAllRequiredFields();
}
否则{
设置超时(()=>{
checkRequired();
for(让index=0;index
刚刚添加的更改事件修复了我的问题
$('#'+id+' option').each(function() {
$(this).attr('selected','selected');
$('#'+id).change();
if(count == 0){
getAllRequiredFields();
}
else{
setTimeout(() => {
checkRequired();
for (let index = 0; index < allRequired.length; index++) {
console.log('for else',allRequired[index]);
if(!newRequired.includes(allRequired[index])){
console.log('allRequired',allRequired[index]);
}
}
}, 3000);
}
count++;
})
$('#'+id+'选项')。每个(函数(){
$(this.attr('selected','selected');
$('#'+id).change();
如果(计数=0){
getAllRequiredFields();
}
否则{
设置超时(()=>{
checkRequired();
for(让index=0;index