Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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_Jquery_Wordpress_Gravity Forms Plugin - Fatal编程技术网

Javascript 相关下拉菜单问题

Javascript 相关下拉菜单问题,javascript,jquery,wordpress,gravity-forms-plugin,Javascript,Jquery,Wordpress,Gravity Forms Plugin,我正在润色一点我写的jquery,它可以在两个下拉框上工作。基本上,当第一个下拉列表更改时,它会过滤第二个下拉列表以仅显示适用的选项。如果在第一个下拉列表中选择了第一个选项(值:“无”),则在第二个下拉列表中不显示任何选项 大多数情况下,它工作得很好。问题是:如果在第一个下拉列表中选择第一个选项,则第二个下拉列表将清除。但是,如果在第一个下拉列表中选择另一个选项,则第二个选项将在不应该为空时保持为空 如果你能帮我解决这个问题,我将不胜感激。您可以在此处找到下拉框: PS:如果它有区别的话(但我认

我正在润色一点我写的jquery,它可以在两个下拉框上工作。基本上,当第一个下拉列表更改时,它会过滤第二个下拉列表以仅显示适用的选项。如果在第一个下拉列表中选择了第一个选项(值:“无”),则在第二个下拉列表中不显示任何选项

大多数情况下,它工作得很好。问题是:如果在第一个下拉列表中选择第一个选项,则第二个下拉列表将清除。但是,如果在第一个下拉列表中选择另一个选项,则第二个选项将在不应该为空时保持为空

如果你能帮我解决这个问题,我将不胜感激。您可以在此处找到下拉框:

PS:如果它有区别的话(但我认为没有),那就是WordPress网站,表单是由GravityForms生成的

注:代码如下:

tripFilter = function () {

        var tripClass = '.hotel-trip select',
            hotelClass  = '.hotel-name select',
            unusedClass = '.unused-options select';
        jQuery(tripClass).change(function(){
            //testFunc();

            var tripSelect = jQuery(tripClass),
                trip = tripSelect.val(),
                hotelSelect = tripSelect.parents('form').find(hotelClass);
            if (trip === "none|"){
                jQuery(hotelClass+" > option").each(function() {
                    jQuery(this).clone().appendTo(unusedClass);
                    jQuery(this).remove();
                }); 
            } else {
                tripnum =  trip.match(/JWRP (\d*)/)[1];

                //var hotelChoices = [];
                jQuery(unusedClass+" > option").each(function() {
                        jQuery(this).clone().appendTo(hotelClass);
                        jQuery(this).remove();
                });
                jQuery(hotelClass+" > option").each(function() {
                    hotelMatch = jQuery(this).val().match(/(\d*) /);
                    //console.log(hotelMatch);
                    if (hotelMatch === null || hotelMatch[1] != tripnum){
                        jQuery(this).clone().appendTo(unusedClass);
                        jQuery(this).remove();
                        //console.log("not a match!");
                    };
                });

            }

    });
};




jQuery(document).ready(function () {
    tripFilter();
});
jQuery(document).bind('gform_post_render', function(event, form_id){
    if(form_id == 38) {
        tripFilter();
    }
});

如果我理解正确的话,第一个dropdowm引导第二个dropdowm。 所以,我认为您可以在第一个下拉列表的“change”事件上添加一个侦听器,以便在每次第一个输入的值经过某些更改时执行您的函数

试着这样做:

$(document).ready(function(){
    $('#38').bind('change', tripFilter)
});

Use应该将代码的相关部分粘贴到此处,以便将来的读者能够从中受益-如果url发生更改、网站宕机或其他问题。只需检查浏览器控制台并首先修复这些错误。我正在处理这两个问题,但我认为它们与上面的错误代码无关。谢谢你的答复。我已经有了类似的东西:jQuery(document).ready(函数(){tripFilter();});您的代码会替换那个部分吗?是的,因为每次您从第一个下拉选择中选择一个选项时,都会执行我的代码。你的代码只被触发一次。好吧,我用你的代码替换了我的代码,问题仍然存在。直到我在第一个框中选择“请选择一个”,然后尝试更改它,它才能正常工作。还有其他想法吗?