Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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 根据以前的值绑定另一个下拉列表_Javascript_Php_Jquery - Fatal编程技术网

Javascript 根据以前的值绑定另一个下拉列表

Javascript 根据以前的值绑定另一个下拉列表,javascript,php,jquery,Javascript,Php,Jquery,我一共有4个下拉列表。。。所有下拉列表都包含数字 最后三个下拉列表的最大数量始终等于在第一个下拉列表中选择的数量 谁能帮我解决这个问题。提前谢谢 到目前为止我已经试过了 var tripChildSelect = $('#trip-child-count-range_0'); var childRangeLength = "<?php echo $this->getChildRangeLength()?>"; var j; fo

我一共有4个下拉列表。。。所有下拉列表都包含数字

最后三个下拉列表的最大数量始终等于在第一个下拉列表中选择的数量

谁能帮我解决这个问题。提前谢谢

到目前为止我已经试过了

var tripChildSelect = $('#trip-child-count-range_0');
        var childRangeLength = "<?php echo $this->getChildRangeLength()?>";
        var j;

        for(j=1; j <= childRangeLength; j++ )
        {
            var childRange = $('#trip-child-count-range_' + j);
        }

        tripChildSelect.change(function() {
            tripChildSelect = $(this);
            availableChildren = tripChildSelect.data('max-count') - tripChildSelect.val();
            console.log(tripChildSelect.data('max-count') - tripChildSelect.val());
            if(tripChildSelect.data('max-count') - tripChildSelect.val() === 0) {
                for(j=1; j <= childRangeLength; j++ )
                {
                    var childRange = $('#trip-child-count-range_' + j);
                    childRange.prop('disabled', true);
                }
            } else {
                for(j=1; j <= childRangeLength; j++ )
                {
                    var childRange = $('#trip-child-count-range_' + j);
                    childRange.find('option').each(function (index, element) {
                        selectOption = $(element);
                        if(selectOption.val() <= availableChildren) {
                            selectOption.show();
                        } else {
                            selectOption.hide();
                        }
                    });
                    childRange.prop('disabled', false);
                }
            }
        }); 

        //disable if sum equals
        $('.trip-child-count-range').change(function() {
            // body...
            var sum = 0;
            $('.trip-child-count-range :selected').each(function() {
                sum += Number($(this).val());
            });
           // console.log('sum- '+sum);
            if(sum == $('#trip-child-count').val())
            {
                $('.trip-child-count-range').each(function() {
                    if($(this).val() == 0)
                        $(this).attr('disabled', true);
                });
            }
            else
            {
                $('.trip-child-count-range').each(function() {
                    if($(this).val() == 0)
                        $(this).attr('disabled', false);
                });
            }
          })

$('#trip-child-count').change(function() {
            // body...
            var i;
            for (i = 1; i <= $(this).val(); i++)
            { 
                 if ( $(".trip-child-count-range option[value='"+i+"']").length == 0 )
                 $('.trip-child-count-range').append( '<option value="'+i+'">'+''+i+'</option>' );
            }
            //set adta-max-xount
            $('#trip-child-count-range_0').data( "max-count", $(this).val());
           // console.log('hello' + $('#trip-child-count-range_0').data( "max-count"));

            //remove greater options
            $(".trip-child-count-range  option").each(function() {
                if($(this).val() > $('#trip-child-count').val()) 
                {
                    $(".trip-child-count-range option[value="+this.value+"]").remove();
                }
            });


            //added finalllu
            $('.trip-child-count-range').attr('disabled', false);
            $('.trip-child-count-range option[value=0]').attr('selected','selected');
            availableChildren = $('#trip-child-count').val();
        });
第一个下拉列表id:trip child count


其余3个下拉列表的通用类:trip child count range

这里我列出了您的基本需求。首先使用0-4选项创建第一个下拉列表,并将其他三个下拉列表设为空。然后根据当前下拉列表值将选项附加到其他下拉列表

    <!DOCTYPE html>
    <html>
    <body>
        <div>
            <select id="dropdown1">
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
            </select>
            <select id="dropdown2">         
            </select>
            <select id="dropdown3">
            </select>
            <select id="dropdown4">
            </select>
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>    
        <script>
            $(document).ready(function () {            
               $("#dropdown1").on("change",function(){
                var dd1 = parseInt($(this).val());
                $("#dropdown2, #dropdown3, #dropdown4").empty();
                for(var i=0;i<=dd1;i++){
                    $("#dropdown2, #dropdown3, #dropdown4").append('<option val='+i+'>'+i+'</option>');
                }               
              });

              $("#dropdown2").on("change",function(){
                var dd1 = parseInt($("#dropdown1").val());
                var dd2 = parseInt($(this).val());              
                $("#dropdown3, #dropdown4").empty();
                for(var i=0;i<=dd1-dd2;i++){
                    $("#dropdown3, #dropdown4").append('<option val='+i+'>'+i+'</option>');
                }               
              });

              $("#dropdown3").on("change",function(){
                var dd2 = parseInt($("#dropdown2").val());
                var dd3 = parseInt($(this).val());
                $("#dropdown4").empty();
                for(var i=0;i<=dd2-dd3;i++){
                    $("#dropdown4").append('<option val='+i+'>'+i+'</option>');
                }               
              });
            });    
        </script>
    </body>
    </html>

请展示你所做的尝试far@RJParikh... 再次看到我的问题,我刚刚添加了我的代码OK,在stackoverflow的代码片段中添加带有HTML的代码,这样我们可以在代码中检查并解决问题谢谢你的回答。。但我希望最后三个下拉列表的最大数量始终等于在第一个下拉列表中选择的数量。如果您从第一个下拉列表中选择4,则用户可以从第二个下拉列表中选择0,1,2,3,4,如果用户从第二个下拉列表中选择3,则第三个下拉列表将仅包含0和1,它应始终是第一个下拉列表的总和。因此,邻近下拉列表应具有基于前一个下拉列表的值,然后其他下拉列表应为空。因此,您需要使用第一个下拉列表监控其他下拉列表值的总和一个和更新附近下拉列表的基础上,上一个。谢谢回答。。。它不能正常工作。。。试试这个序列。。。第一->第三->第二->第二->第三->第三->第一,所以这里的总和已完成。。但第四个仍然在下拉列表中显示1值。。。它应该被禁用。再次感谢
    <!DOCTYPE html>
    <html>
    <body>
        <div>
            <select id="dropdown1">
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
            </select>
            <select id="dropdown2">         
            </select>
            <select id="dropdown3">
            </select>
            <select id="dropdown4">
            </select>
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>    
        <script>
            $(document).ready(function () {            
               $("#dropdown1").on("change",function(){
                var dd1 = parseInt($(this).val());
                $("#dropdown2, #dropdown3, #dropdown4").empty();
                for(var i=0;i<=dd1;i++){
                    $("#dropdown2, #dropdown3, #dropdown4").append('<option val='+i+'>'+i+'</option>');
                }               
              });

              $("#dropdown2").on("change",function(){
                var dd1 = parseInt($("#dropdown1").val());
                var dd2 = parseInt($(this).val());              
                $("#dropdown3, #dropdown4").empty();
                for(var i=0;i<=dd1-dd2;i++){
                    $("#dropdown3, #dropdown4").append('<option val='+i+'>'+i+'</option>');
                }               
              });

              $("#dropdown3").on("change",function(){
                var dd2 = parseInt($("#dropdown2").val());
                var dd3 = parseInt($(this).val());
                $("#dropdown4").empty();
                for(var i=0;i<=dd2-dd3;i++){
                    $("#dropdown4").append('<option val='+i+'>'+i+'</option>');
                }               
              });
            });    
        </script>
    </body>
    </html>