Любой простой способ jQuery для переноса текста из нескольких текстовых полей в несколько других? - PullRequest
1 голос
/ 04 августа 2009

У меня есть форма, требующая информацию о выставлении счетов и доставке. Как вы можете себе представить, у меня есть текстовые поля с повторяющейся информацией в 95% случаев. Однако в случае, если кто-то хочет, чтобы счет выставлялся в одном месте, а его товары были отправлены в другое место, мы должны это учитывать.

Что бы я хотел сделать, чтобы улучшить взаимодействие с пользователем, есть кнопка, которая передает все данные из полей Billing их партнерам по отправке. Есть ли способ сделать это легко в jQuery? Прямо сейчас я сделал это на сервере с типичным отображением 1: 1 (т. Е. shippingfirstname.text = billingfirstname.text и т. Д.), Но мне было интересно, смогу ли я сохранить обратную передачу с помощью некоторого простого jQuery. Тем не менее, с учетом способа, которым .NET манипулирует идентификаторами, я обнаружил, что, вероятно, требуется больше работы для настройки всех идентификаторов клиентов и последующей передачи. Я что-то упустил?

Спасибо

Ответы [ 2 ]

5 голосов
/ 04 августа 2009

Это зависит от того, какие поля имеют одинаковые имена, за исключением биллинга / доставки, и что только те поля, которые вы хотите скопировать, содержат "биллинг".

function copyAddress() {
    $('input[name*=billing]').each( function() {
         var $this = $(this);
         var shippingName = $this.attr('name').replace(/billing/,'shipping');
         $('input[name$=' + shippingName + ']').val( $this.val() );
    });
}
2 голосов
/ 04 августа 2009

Я думаю, что лучшее решение для этого - запросить адрес для выставления счета, а затем установить простой флажок «Отправлять на адрес для выставления счета» - по умолчанию этот флажок установлен - когда кто-то снимает этот флажок, появляются поля «Доставка» , Серверная сторона все еще должна обрабатывать копирование этой информации из полей 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(/\]/, '\\]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...