0

我有这个非常简单的 jquery 代码,或者我是这么想的,但它的功能不像预期的那样

我想要的是,如果从下拉列表中选择值 = '海报',隐藏所有字段集,然后显示我选择的那些。如果从下拉列表中选择的值 = 'Logo',则隐藏所有字段集,然后显示我选择的那些,依此类推。我知道很简单,但字段集并不总是像它们应该隐藏的那样隐藏。

例如,如果我从下方选择“ Logo ”,则只应显示一个字段集,这可行,然后如果我选择“ booklet ”,则应显示多个字段集并且这可行,但是如果我返回并再次选择徽标,所有字段集都保留下来,而不是全部隐藏,然后显示在项目类型“徽标”所需的字段集上。

谁能看到我做错了什么? 注意:更改项目类型下拉字段时,会调用 projectTypeChange()

function projectTypeChange()
{
        $(document).ready(function() {
        $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
        var dropVal = $('select#6211').val();

       if(dropVal ==  "Poster")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
           }
       if(dropVal ==  "Booklet")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
              $('fieldset#section-964').show(); 
           }
       if(dropVal ==  "Logo")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-962').show(); 
           }

        });
}
4

2 回答 2

1

因为你用

$(document).ready(function() { });

这通常用于在文档加载后立即执行某些操作。一旦您的下拉框更改,您的文档已在不久前加载,并且其中的所有内容

$(document).ready(function() { 

    // this part here

 });

不会执行。

简单的解决方案:从事件处理程序中删除$(document).ready(function() {(及其右括号});,它首先不应该在那里。把它放在事件处理程序之外的某个地方。

您更正的代码应为:

$(document).ready(function() {
    $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964','fieldset#section-967').hide();
});

function projectTypeChange()
{
        var dropVal = $('select#6211').val();

       if(dropVal ==  "Poster")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
           }
       if(dropVal ==  "Booklet")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-960').show(); 
              $('fieldset#section-961').show(); 
              $('fieldset#section-967').show(); 
              $('fieldset#section-962').show(); 
              $('fieldset#section-964').show(); 
           }
       if(dropVal ==  "Logo")
           {
              $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();
              $('fieldset#section-962').show(); 
           }


}
于 2012-08-13T14:04:07.190 回答
-1

好吧,现在就开枪打死我。我发现它 - 似乎总是发生,之后,我寻求帮助。

问题是我的报价。

我有: $('fieldset#section-960', 'fieldset#section-961', 'fieldset#section-962', 'fieldset#section-964', 'fieldset#section-967').hide();

什么时候应该是: $('fieldset#section-960, fieldset#section-961, fieldset#section-962, fieldset#section-964, fieldset#section-967').hide();

最后引用,而不是每个引号。我会留下这个,希望能防止其他人像我一样感到愚蠢。感谢您的输入。

于 2012-08-13T14:13:44.430 回答