2011-03-31 48 views
2

我有相同的功能,检查窗体中的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(); 
    } 
}); 

谢谢!

回答

0

终于得到了它在这里工作:

http://jsfiddle.net/4UkTP/

这可能不是最漂亮的jQuery(我承认我是一个新手),但它的工作原理! :)

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的意见,他们希望澄清运行或不当复选框被选中时,某些无线电信箱将被隐藏。下面是我recomended

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

嘿JaredPar,感谢您的意见。我得到你说的话的概念,但由于某种原因,我试图整合这一点并没有奏效。我已经把我在这里所做的代码:http://jsfiddle.net/flinx777/c2PCT/ ...显然我做错了什么? – flinx777 2011-03-31 16:01:06

+0

@ flinx777你在那个应用程序中期待什么行为? – JaredPar 2011-03-31 16:12:44

+0

我正在寻找的行为是当有人在输入文本框中更改其国家/地区的值时,如果它不是美国,则会隐藏具有“radio_us”类的标签。挑战是我有2个输入文本字段,用户可以进入他们的国家。如果没有选中ID为“use_different_addresses”的复选框,那么我的函数应该在ID为“customer_country_name”的输入上运行,但是如果复选框被选中,那么我需要在输入字段上运行我的函数,其id为“shipping_country_name”。希望有助于澄清。 – flinx777 2011-03-31 16:22:16

1

没有看到更多的标记解决方案,你可以使用.toggle()触发.change()

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