根据是否选中复选框更改功能

时间:2011-03-31 15:41:01

标签: jquery

我有相同的功能检查表单中的2个不同的文本输入字段。如果选中了复选框,我需要在其中一个文本输入字段上运行该函数。如果未选中该复选框,则我需要该函数在其他文本输入字段上运行。

这是复选框:

<input id="use_different_addresses" type="checkbox" value="1" name="use_different_addresses" />Use different address<br />

默认情况下,不会选中该复选框。如果未选中,我需要运行此功能:

$('#customer_country_name').change(function() {
    if ($('#customer_country_name').val() != 'United States') {
        $('.radio_us').hide();
    }
    else {
        $('.radio_us').show();
    }
});

选中该复选框后,我需要运行此功能:

$('#shipping_country_name').change(function() {
    if ($('#customer_country_name').val() != 'United States') {
        $('.radio_us').hide();
    }
    else {
        $('.radio_us').show();
    }
});

谢谢!

3 个答案:

答案 0 :(得分:2)

为什么不在每个方法的顶部添加一个检查,以确定它是否应该根据checked状态运行

$('#customer_country_name').change(function() {
  if (!$('#use_different_addresses').is(':checked')) {
   ...
  }
}

$('#shipping_country_name').change(function() {
  if ($('#use_different_addresses').is(':checked')) {
   ...
  }
}

编辑

OP在评论中澄清说,他们希望在选中复选框时隐藏某些无线电盒。这是我推荐的解决方案

$('#use_different_addresses').change(function() {
  if ($('#use_different_addresses').is(':checked')) {
    $('.radio_us').hide();
  } else {
    $('.radio_us').show();
  }
});

答案 1 :(得分:1)

如果没有看到更多标记,您可以使用.toggle()来触发.change()

$("#use_different_addresses").toggle(function(){
  $('#customer_country_name').change();
}, function(){
  $('#shipping_country_name').change();
});

答案 2 :(得分:0)

最后让它在这里工作:

http://jsfiddle.net/4UkTP/

这可能不是最漂亮的jQuery(我承认我是新手),但它确实有效! :)