10行目がnullを返すのはなぜですか?
40行目で動作します
siblings()演算子を適切に把握していないようです。また、jQueryのval()関数を使用しておらず、一部のクラス名にピリオドがありませんでした。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('');
}
}
.val()
代わりにinput:textをフェッチしてみてください
9行目では、var checkbox = $(this);
代わりにすべきではありませんか?jQuery()関数がそのように使用されているのを見たことがありません。
<input class="address1"/>
の兄弟ではないため<input id="parent_sameAsBefore"/>
。私はあなたが欲しいと思います:
checkbox.parent().parent().find('.address1');
絶対パスを使用してフォーム フィールドを検索しないのはなぜですか? 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;
alert(checkbox.siblings('.address1').html() ); // これは
alert(checkbox.parent().siblings('.address1').html() );
//チェックボックスには兄弟がありません 10行目