2009-08-03 66 views
1

我有一个需要帐单和运输信息的表单。正如你可以想象的,我有95%的案例重复信息的文本框。但是,如果有人想在一个地方收费并将他们的物品运到其他地方,我们需要对此进行说明。任何简单的jQuery方法将文本从几个文本框转移到其他几个文本框?

我想要增强用户体验的操作有一个按钮,用于将所有数据从“结算”字段传输到其对应的装运对象。有没有什么办法可以在jQuery中轻松实现?现在我已经在服务器上完成了典型的1对1映射(即shippingfirstname.text = billingfirstname.text等),但我想知道是否可以用一些简单的jQuery保存回传。但是,以.NET的方式来摧毁ID,我发现设置所有客户端ID然后进行传输可能需要更多的工作。我错过了什么吗?

感谢

回答

5

这取决于该领域被命名除了计费/航运,只有要复制含有“账单”这些领域完全一样。

function copyAddress() { 
    $('input[name*=billing]').each(function() { 
     var $this = $(this); 
     var shippingName = $this.attr('name').replace(/billing/,'shipping'); 
     $('input[name$=' + shippingName + ']').val($this.val()); 
    }); 
} 
+0

甜圣球。我可以吻你。这太神奇了,谢谢! – Jason 2009-08-03 21:41:30

2

我觉得这个最好的解决办法是要求帐单地址,然后有一个简单的复选框,说“船到帐单地址” - 默认选中 - 当有人取消选中该复选框,在“运输“字段出现。服务器端仍然应该处理从billing-> shipping字段复制该信息,并非所有用户都使用javascript。

至于jQuery的方式从一组字段复制到另一个你可以尝试沿着线的东西:

// just so we are only working within the one form we want to work with: 
var $form = $('#ourform'); 

// all fields whos names begin with 'billing': 
$('input[name^=billing]', $form).each(function() { 
    var $field = $(this); 

    // replace the billing with shipping 
    var newName = $field.attr('name').replace(/^billing/, 'shipping'); 

    // look for an input named shipping instead of billing, 
    // and set its value to our value. 
    $('input[name='+newName+']', $form).val($field.val()); 
}); 

如果您使用的是您输入名字[和]字符 - 你将需要用这行代码逃避它们:

newName = newName.replace(/\[/, '\\[').replace(/\]/, '\\]'); 
相关问题