我想创建由 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}"/>';
}
}
}