-1

我有超过 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());
});​
4

3 回答 3

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() { ... });

正如其他人指出的那样,使用.onor .delegate(取决于 jQuery 版本) over .live.

于 2012-09-06T13:34:53.407 回答
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());
});
于 2012-09-06T13:35:49.750 回答
0

尝试使用:

$("input#same_shipping_address_first_name").on('change', function(){
 .....
于 2012-09-06T13:36:00.550 回答