2012-06-25 55 views
1

我有一些下拉框用作页面上的过滤器。当选择任一个时,页面将根据选择重新加载并过滤帖子。当选择一个值(和页面重新加载)时隐藏选择

我想要做的是在页面重新加载时隐藏一个特定的选择,如果该值不是空白字符串(例如,如果某人选择'奥克兰',我希望该选择输入从页面消失时它重新加载,但其他选择应保持可见)。

下面是HTML ...

<ul> 
<li> 
    <label style="display:none;">Location:</label> 
    <select onchange="this.form.submit();" name="locations" class="filter-dropdown"> 
     <option value="">SELECT</option> 
     <option value="auckland" class="level-0">Auckland</option> 
     <option value="tauranga" class="level-0">Tauranga</option> 
     <option value="wellington" class="level-0">Wellington</option> 
    </select> 
</li> 
<li> 
    <label style="display:none;">Product or service:</label> 
    <select onchange="this.form.submit();" name="typeofproduct" class="filter-dropdown"> 
     <option value="">SELECT</option> 
     <option value="clothing" class="level-0">Clothing</option> 
     <option value="food" class="level-0">Food</option> 
     <option value="shoes" class="level-0">Shoes</option> 
     <option value="travel" class="level-0">Travel</option> 
    </select> 
</li> 

这里是我在使用jQuery可怜的尝试......

jQuery('.filter-dropdown').bind('change', function(event) { 

     var x = jQuery(".filter-dropdown option:selected").text(); 

     if (x == "") { 
      jQuery(this).show(); 
     } 
     else{ 
      jQuery(this).hide(); 
     } 
    }); 

我已经试过各种这一点,但离我最近的是隐藏所有下拉菜单的页面(只应该用于已经选择的页面)。我使用类而不是ID的原因是因为其他页面上可能会有更多的下拉菜单

回答

0

隐藏用户的选择不是一个好的功能,因此他们不仅看不到他们选择了什么,而且他们也不能改变它。不管怎样,下面将做的工作:

var element = docment.formName.locations; 
if (element.value != '') { 
    element.style.display = 'none'; 
} 

替代实际的名称或形式formName的ID。

请注意,当页面加载时,默认情况下会显示select,因此只需根据其值进行隐藏即可。另请注意,除非将其他选项设置为默认选定选项,否则该值在大多数浏览器中默认为第一个选项的值。

最后,如果选项没有值属性,那么IE8和更低版本不会与上面的行为,所以请确保它们有一个(给予它们相同的值,因为它们的文本是好的)。

+0

这就是答案!是的,我意识到这不是最大的功能,这是更多的解决方法。 注:我会upvote你,但我是堆栈溢出的新手,目前没有任何声誉。 –

相关问题