任何简单的jQuery方式将文本从几个文本框传输到其他几个文本框?

时间:2009-08-03 21:24:21

标签: jquery

我的表单需要结算和发货信息。你可以想象,我有95%的案例有重复信息的文本框。但是,如果有人想在一个地方开帐单并将商品运到别处,我们需要考虑到这一点。

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

由于

2 个答案:

答案 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(/\]/, '\\]');