Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Select选项更改DOM并检查必填字段的数量_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用Select选项更改DOM并检查必填字段的数量

Javascript 使用Select选项更改DOM并检查必填字段的数量,javascript,jquery,html,Javascript,Jquery,Html,为了成功提交表单,需要填写一个包含一定数量必填字段的网页。 required字段的最大指示器是它有一个*并且它的标签中有一个类“required”。 当我们更改下拉列表值时,所需字段的数量会更改。我已经编写了一些javascript和jquery代码来更改下拉值,然后检查必填字段的数量,但出于某种原因(很可能DOM更改需要时间,代码在此之前执行,所以实际上必填字段数量的更改没有反映在页面中)。但是,如果我手动更改下拉列表值,然后运行checkRequired()函数,它可以正常工作,但我希望自动

为了成功提交表单,需要填写一个包含一定数量必填字段的网页。 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