jquery实时更改输入

jquery实时更改输入,jquery,html,Jquery,Html,我有不止一个实时更改,用于监视输入并复制到另一个字段中-对名字非常有效,但由于某些原因,之后的任何其他字段都不起作用。。。。有人有什么想法吗 $("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_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());
});​

似乎您希望将live listener添加到相同的\u shipping\u address\u last\u name,而不是当前的相同\u billing\u address\u last\u 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
对于后续的选择不起作用,因为第一个选择符是
相同的计费\ux
,应该是
相同的发货\ux

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

$("form").delegate('#same_shipping_address_first_name', 'change', function(){ 
    $('#same_billing_address_first_name').val($(this).val());
});
尝试使用:

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

我认为
this.id
也可以代替
$(this.attr('id')
,但是+1因为我认为完全相同的解决方案Thank起了作用,所以不得不使用live作为使用的较低版本,但所有的效果都与预期的一样-谢谢