我的表单需要结算和发货信息。你可以想象,我有95%的案例有重复信息的文本框。但是,如果有人想在一个地方开帐单并将商品运到别处,我们需要考虑到这一点。
我想要提升用户体验的方法是使用一个按钮,将所有数据从“结算”字段传输到“运费”对应项。有没有办法在jQuery中轻松完成这项工作?现在我已经在服务器上完成了典型的1对1映射(即shippingfirstname.text = billingfirstname.text
等),但我想知道是否可以使用一些简单的jQuery保存回发。但是,通过.NET破坏ID的方式,我发现设置所有客户端ID然后进行传输可能更有用。我错过了什么吗?
由于
答案 0 :(得分: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() );
});
}
答案 1 :(得分:2)
我认为最好的解决方案是询问帐单邮寄地址,然后有一个简单的复选框,上面写着“运送到帐单邮寄地址” - 默认情况下已选中 - 当有人取消选中该复选框时,“送货”字段会显示。服务器端仍然应该处理从billing->发货字段复制该信息,而不是所有用户都使用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(/\]/, '\\]');