【问题标题】:Related dropdown menu issue相关下拉菜单问题
【发布时间】:2014-03-12 16:50:47
【问题描述】:

我正在完善我编写的一些适用于 2 个下拉框的 jquery。基本上,当第一个下拉列表更改时,它会过滤第二个下拉列表以仅显示适用的选项。如果在第一个下拉菜单中选择了第一个选项(值:“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();
    }
});

【问题讨论】:

  • 使用时应在此处粘贴代码的相关部分,以便将来的读者可以从中受益 - 以防 url 更改、网站关闭或其他一些问题。
  • 只需检查浏览器的控制台并先修复这些错误
  • 我正在处理这两个问题,但我认为它们与错误无关
  • 见上面的代码。谢谢

标签: javascript jquery wordpress gravity-forms-plugin


【解决方案1】:

如果我理解正确的话,首先 dropdowm 引导第二。 因此,我认为您可能只是在第一个下拉列表的“更改”事件上添加一个侦听器,以便在每次第一个输入的值发生一些更改时执行您的功能。

试试这个方法:

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

【讨论】:

  • 感谢您的回复。我已经有类似的东西: jQuery(document).ready(function () { tripFilter(); });你的代码会取代那部分吗?
  • 是的,因为每次您从第一个下拉选择中选择一个选项时,都会执行我的代码。相反,您的代码只会触发一次。
  • 好的,我用你的代码替换了我的代码,问题仍然存在。直到我在第一个框中选择“请选择一个”,然后尝试更改它,它才能完美运行。还有其他想法吗?
猜你喜欢
  • 2012-12-20
  • 1970-01-01
  • 2011-04-13
  • 2016-06-23
  • 2015-11-08
  • 2016-05-08
相关资源
最近更新 更多