Замена полей с помощью jQuery - PullRequest
1 голос
/ 30 ноября 2009

Почему строка 10 возвращает ноль?

http://pastie.org/720484

работает со строкой 40

Ответы [ 6 ]

2 голосов
/ 30 ноября 2009

Вы, похоже, не совсем понимаете оператор siblings (). Вы также не использовали функцию val () jQuery и пропускали точки в некоторых именах классов. Чтобы найти класс address1, вам нужно сделать следующее:

var $checkbox = jQuery(this); 
$checkbox.parent().siblings('.formField').find('.address1');

Кроме того, вы хотите, чтобы оповещение было

alert($checkbox.parent().siblings('.formField').find('.address1').val());

для оповещения о значении поля ввода.

ФИКСИРОВАННАЯ И ОПТИМИЗИРОВАННАЯ ВЕРСИЯ:

function update_address(eventObject) { 
  var $checkbox = jQuery(this);
  var $siblings = $checkbox.parent().siblings('.formField');
  if ($checkbox.attr('checked')) { 
      $siblings.find('.address1').val($('.hidden_address1').val());
      $siblings.find('.address2').val($('.hidden_address2').val());
      $siblings.find('.city').val($('.hidden_city').val());
      $siblings.find('.state').val($('.hidden_state').val());
      $siblings.find('.zip').val($('.hidden_zip').val());
      $siblings.find('.province').val($('.hidden_province').val());
      $siblings.find('.country').val($('.hidden_country').val());
  } else { 
      $siblings.find('.address1').val('');
      $siblings.find('.address2').val('');
      $siblings.find('.city').val('');
      $siblings.find('.state').val('');
      $siblings.find('.zip').val('');
      $siblings.find('.province').val('');
      $siblings.find('.country').val('');
  }    
}
1 голос
/ 30 ноября 2009

В строке 9, не должно ли быть var checkbox = $(this); вместо этого? Я не видел, чтобы функция jQuery () использовалась таким образом.

1 голос
/ 30 ноября 2009

попробуйте извлечь ввод: текст .val() вместо

0 голосов
/ 30 ноября 2009

Почему бы просто не найти поля формы по абсолютному пути? Если ваш DOM не очень сложный (и вам нужны относительные пути), я бы предпочел этот подход сам.

Также используйте .val () для получения и установки значений.

function update_address(eventObject) { 
  if($(this).attr('checked')) { 
    $('#parent_address1').val($('hidden_address1').val()); 
    $('#parent_address2').val($('hidden_address2').val()); 
    $('#parent_city').val($('hidden_city').val()); 
    $('#parent_state').val($('hidden_state').val()); 
    $('#parent_zip').val($('hidden_zip').val()); 
    $('#parent_province').val($('hidden_province').val()); 
    $('#parent_country').val($('hidden_country').val()); 
  }    
  else { 
    $('#parent_address1').val("");  
    $('#parent_address2').val("");  
    $('#parent_city').val("");  
    $('#parent_state').val("");  
    $('#parent_zip').val("");  
    $('#parent_province').val("");  
    $('#parent_country').val("");  
  }    
}

Обратите внимание, похоже, что ошибка в исходном коде в строке 15:

checkbox.siblings('.tate').value = $('hidden_state').value; 

Должно быть:

checkbox.siblings('.state').value = $('hidden_state').value; 
0 голосов
/ 30 ноября 2009

alert (checkbox.siblings ('. Address1'). Html ()); // Это должно быть

alert (checkbox.parent (). Siblings ('. Address1'). Html ());

// Флажок не имеет братьев и сестер Линия 10

0 голосов
/ 30 ноября 2009

Потому что <input class="address1"/> не брат <input id="parent_sameAsBefore"/>. Я думаю, что вы хотите:

checkbox.parent().parent().find('.address1');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...