2013-03-26 108 views
0

加载页面时(从mysql db动态填充第一个下拉列表(div StatusID))或者用户从第一个下拉框中选择Unemployed-EI,div status_sub_6显示第二个select语句。js隐藏功能

我的.hide .show函数可以很好地激活更改,但是即使动态填充的第一个选择(StatusID)值满足比较条件,该函数也会隐藏加载页面时的第二个下拉列表。

我确定我需要一个覆盖下面的.js代码的onload函数,但是在编写附加代码时真的很感谢帮助。

的JavaScript:

$(document).ready(function(){ 
    $('#status_sub_6').hide(); 

    $('#StatusID').change(function() { 
     if ($('#StatusID option:selected').text() == "Unemployed - EI"){ 
      $('#status_sub_6').show(); 
     } 
     else { 
       $('#status_sub_6').hide(); 
     } 
    }); 
}); 

回答

1

为此,您可以通过触发更改事件负载之后。

$(document).ready(function(){ 
    ... 
    // your current code 
    ... 
    $('#StatusID').trigger('change'); // trigger a change 
}); 
+0

只负载时触发条件满足 – Huangism 2013-03-26 18:39:18

+0

@Huangism - 的标准正在里面检查更改处理程序。 – techfoobar 2013-03-26 18:42:14

+0

我选择了这个,因为它对我来说似乎是最合乎逻辑的,而且完全按照我的需要提供。你们很棒。我希望能够在未来帮助别人解决问题,因为很多人都帮助过我。谢谢 – Aquatwit 2013-03-30 01:50:20

0

尝试:

$(function() { 
    $('#status_sub_6').hide(); 
    $(document).on('change', '#StatusID', function() { 
     if ($('#StatusID option:selected').text() == "Unemployed - EI"){ 
     $('#status_sub_6').show(); 
     } 
     else { 
     $('#status_sub_6').hide(); 
     } 
    }); 

    $('#StatusID').change(); 
}); 
0

你也可以这样做:

$(document).ready(function(){ 
    if ($('#StatusID option:selected').text() == "Unemployed - EI"){ 
     $('#status_sub_6').hide(); 
    } 

    $('#StatusID').change(function() { 
     if ($('#StatusID option:selected').text() == "Unemployed - EI"){ 
      $('#status_sub_6').show(); 
     } 
     else { 
       $('#status_sub_6').hide(); 
     } 
    }); 
}); 

或略偏优雅的解决方案:

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

    $('#StatusID').change(function() { 
     toggleSub(); 
    }); 
}); 

function toggleSub() { 
    if ($('#StatusID option:selected').text() == "Unemployed - EI") { 
     $('#status_sub_6').hide(); 
    } 
    else { 
     $('#status_sub_6').show(); 
    } 
}