我有超过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());
});
答案 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(){
.....