jquery对输入进行实时更改

时间:2012-09-06 13:32:22

标签: jquery html

我有超过1个实时更改,监视输入并复制到另一个字段 - 在名字上工作得很好,但之后的任何其他字段由于某种原因不起作用....任何人有任何想法?

$("input#same_shipping_address_first_name").live('change', function() {
    $('input#same_billing_address_first_name').val($('input#same_shipping_address_first_name').val());
});
$("input#same_billing_address_last_name").live('change', function() {
    $('input#same_billing_address_last_name').val($('input#same_shipping_address_last_name').val());
});
$("input#same_billing_address_address_line_1").live('change', function() {
    $('input#same_billing_address_address_line_1').val($('input#same_shipping_address_address_line_1').val());
});
$("input#same_billing_address_address_line_2").live('change', function() {
    $('input#same_billing_address_address_line_2').val($('input#same_shipping_address_address_line_2').val());
});
$("input#same_billing_address_address_line_3").live('change', function() {
    $('input#same_billing_address_address_line_3').val($('input#same_shipping_address_address_line_3').val());
});
$("input#same_billing_address_town_city").live('change', function() {
    $('input#same_billing_address_town_city').val($('input#same_shipping_address_town_city').val());
});
$("input#same_billing_address_county").live('change', function() {
    $('input#same_billing_address_county').val($('input#same_shipping_address_county').val());
});
$("input#same_billing_address_postcode").live('change', function() {
    $('input#same_billing_address_postcode').val($('input#same_shipping_address_postcode').val());
});​

3 个答案:

答案 0 :(得分:3)

您似乎想要将实时侦听器添加到same_shipping_address_last_name,而不是像当前一样添加same_ billing _address_last_name。

现在,只要输入发生变化,您就会覆盖输入的值。在first_name示例中,当输入发生更改时,您将覆盖另一个输入的值,这更有意义。

但是,你可以用一个监听器来解决所有这些输入问题。如果将shipping类添加到第一组输入中,例如:

$(".shipping").live('change', function() {
    var billingId = $(this).attr('id').replace('_shipping_','_billing_');
    $('#' + billingId).val($(this).val());
});

你当然可以在没有班级的情况下做这样的事情:

$('input[name^="same_shipping_address"]').live('change', function() { ... });

正如其他人所指出的,使用.on.delegate(取决于jQuery版本)而不是.live

答案 1 :(得分:0)

它对连续的选择器不起作用,因为第一个选择器是same_billing_x,它应该是same_shipping_x

此外,应避免使用live()。如果您使用的是jQuery 1.7+,则应使用on(),否则使用delegate()。这是一个修改过的例子:

$("form").delegate('#same_shipping_address_first_name', 'change', function(){ 
    $('#same_billing_address_first_name').val($(this).val());
});

答案 2 :(得分:0)

尝试使用:

$("input#same_shipping_address_first_name").on('change', function(){
 .....