在选择更改上隐藏表单元素

时间:2012-01-10 13:32:40

标签: jquery

您好我正在尝试隐藏表单元素,除非选择了特定的下拉列表值;这是我的代码到目前为止,但它不起作用?

<script type="text/javascript">

  $(document).ready(function() {
        $('txt_ccode').change(function() {
            if ($(this).val() == 'GB') {
                document.getElementById('txt_postcode').style.display="block";
            }
            else {document.getElementById('txt_postcode').style.display="none"; }

    }); 
});
</script>

感谢任何帮助

4 个答案:

答案 0 :(得分:3)

而不是

$('txt_ccode')

你可能要么:

$('#txt_ccode')

$('.txt_ccode')

取决于您将元素的id和/或class属性设置为。

此外,您可以重新编写代码以使其更简洁:

$('#txt_ccode').change(function() {
    $('#txt_postcode').toggle($(this).val() === 'GB');
}); 

答案 1 :(得分:1)

您应该说明它无法正常工作的原因。使用Firebug等调试器可以获得哪些错误消息。也许document.ready,或者更改函数永远不会运行。或者价值不是你所期望的。

此外,由于您使用jQuery是完全使用它的最佳实践。因此,而不是document.getElementById,我使用$('#txt_postcode')

答案 2 :(得分:1)

现在您正在使用jQuery,内部显示和隐藏逻辑并简化如下:

<script type="text/javascript">

  $(document).ready(function() {
        $('#txt_ccode').change(function() {
            if ($(this).val() == 'GB') {
                $('#txt_postcode').show();
            } else {
                $('#txt_postcode').hide();
            }
    }); 
});
</script>

答案 3 :(得分:0)

$(function() {
   $('select').on('change', function( e ) {
      var val = $('select option:selected').val() // get the value from a dropdown select
      if( val == 'GB' )
      {
          $('element').show()
      }
      else
      {
          $('element').hide()
      }
   })
});