相关的下拉菜单问题

时间:2014-03-12 16:50:48

标签: javascript jquery wordpress gravity-forms-plugin

我正在编写一些jquery,我写的是2个下拉框。基本上,当第一个下拉列表更改时,它会过滤第二个下拉列表以仅显示适用的选项。如果在第一个下拉列表中选择了第一个选项(值:“none |”),则在第二个下拉列表中没有显示任何选项

大部分时间都很棒。问题在于:如果您在第一个下拉列表中选择第一个选项,则第二个下拉列表会清除。但是,如果您在第一个下拉列表中选择另一个选项,则第二个选项不应该为空。

如果你能帮助我解决这个问题,我将不胜感激。您可以在此处找到下拉框:http://goinspire.com/jwrp-hotel-registration/

PS:如果它有所不同(但我认为没有),它是一个WordPress网站,表格由GravityForms生成。

PS:这是代码:

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();
    }
});

1 个答案:

答案 0 :(得分:0)

如果我理解得当,第一个dropdowm指南第二。 所以,我想你可能只是在第一个下拉列表的“更改”事件中添加一个监听器,每次第一次输入的值经过一些更改时执行你的函数。

尝试这种方式:

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