dropDownList で選択された値によって決定される動的な量のフィールドを作成したいと考えています。これはクライアント側で実行されるため、Javascript を介して実行する必要があります。事前にすべてのフィールドを作成し、css を使用して各フィールドを表示/非表示にするだけでこの効果を達成できることはわかっていますが、これは多くの繰り返しコードです。
試行錯誤の結果、ある程度の作業はできましたが、ドロップダウンリストを変更すると値が削除されるか、新しいボックスを作成する前に以前に作成したボックスを削除しない場合はボックスが追加されすぎます。
ドロップダウンリストの変更時に入力した値を失うことなく、私がやろうとしていることを達成する簡単な方法はありますか? 何かを作る私の試みは以下の通りです。
function doAThing() {
var attemptsValue = parseInt(document.forms['ProgramApplicationForm'].elements['VerificationPrimaryHomePhoneAttemptsDropDownList'].value);
if (attemptsValue == null) {
document.getElementById('VerificationPrimaryHomePhoneAttemptDate').innerHTML = null;
} else if (document.getElementById('VerificationPrimaryHomePhoneAttemptDate').innerHTML == null) {
for (counter = 1; counter < attemptsValue + 1; counter++) {
document.getElementById('VerificationPrimaryHomePhoneAttemptDate').innerHTML +=
'<label for="VerificationPrimaryHomePhoneAttemptDate' + counter + '">Attempt ' + counter + ' Date:</label><input type="text" name="VerificationPrimaryHomePhoneAttemptDate' + counter + '" value="" id="p-dod-date-picker" maxlength="10" class="size-ten" placeholder="yyyy-mm-dd" title="yyyy-mm-dd" pattern="\d{4}-\d{2}-\d{2}"/>';
}
} else {
document.getElementById('VerificationPrimaryHomePhoneAttemptDate').innerHTML = null;
for (counter = 1; counter < attemptsValue + 1; counter++) {
document.getElementById('VerificationPrimaryHomePhoneAttemptDate').innerHTML +=
'<label for="VerificationPrimaryHomePhoneAttemptDate' + counter + '">Attempt ' + counter + ' Date:</label><input type="text" name="VerificationPrimaryHomePhoneAttemptDate' + counter + '" value="" id="p-dod-date-picker" maxlength="10" class="size-ten" placeholder="yyyy-mm-dd" title="yyyy-mm-dd" pattern="\d{4}-\d{2}-\d{2}"/>';
}
}
}