我有三个包含数据的下拉列表,这三个下拉列表在用户选择四个下拉列表后克隆。我的目标是在用户选择了正常工作的数据后禁用每个下拉列表。
现在的问题是,在三次下拉被第二次克隆后,前三次下拉启用时,他们仍然无法让用户选择。
我的解决方案是,每次用户选择第四个下拉列表,克隆前三个,我希望前三个保持无法让用户返回选择任何数据,相同的程序将是同样每次下降三次都会被克隆。
我希望这是有道理的。提前谢谢
<option value="AND Quantity <= ">Less Than Or Equal To</option>
<option value="AND Quantity >= ">Greater Than Or Equal To</option>
</select>
<input id="js-ilterValue" type="number" min="0" placeholder="Characteristic Value" style="height: 39px; width: 166px;" />
<button id="js-AddValueFilter" class="mini-button" type="button" onclick="AddValue(document.getElementById('js-ilterValue').value)">+</button>
</div>
<div id="ANDORLabel" class="editor-label" style="width: 157px;"></div>
<div id="ANDORContainer" style="margin-bottom: 10px;">
<select id="ddlANDOR" onchange="ddlANDORChange(this)">>
<option value="">---Add On Statement---</option>
<option value="AND">Both Statements are True</option>
<option value="OR">Either Statement is True</option>
</select>
</div>
function ddlANDORChange(obj) {
var currentLambdaExpression = $('#js-LambdaString').val();
var newLambdaExpression = null;
var currentUIExpression = $('#js-FilterString').val();
var newUIExpression = null;
var currentAndOrString = $('#binaryStringAndOr').val();
if (currentLambdaExpression.endsWith(")")) {
newLambdaExpression = currentLambdaExpression + " " + obj.value + " ";
newUIExpression = currentUIExpression + " " + obj.options[obj.selectedIndex].text + " ";
if (obj.value == 'AND')
{
$('#binaryStringAndOr').val(currentAndOrString + '1');
}
else if (obj.value == 'OR')
{
$('#binaryStringAndOr').val(currentAndOrString + '0');
}
$('#js-LambdaString').val(newLambdaExpression);
$('#js-FilterString').val(newUIExpression);
// Copies the dropdowns above, need to find a away to add the onchange code without repeating it
$('#container:last').before($('#ddlProfile').clone().prop('id', 'ddlProfileClone').prop('disabled', false).show());
$('#container:last').before($('#ddlOption').clone().prop('id', 'ddlOptionClone').prop('disabled', false).show());
$('#container:last').before($('#js-FilterValue').clone().prop('id', 'js-FilterValue').prop('disabled', false).show());
$('#container:last').before($('#js-AddValueFilter').clone().prop('id', 'js-AddValueFilterClone').prop('disabled', false).show());
$('#container:last').before($('#ANDORLabel').clone().prop('id', 'ANDORLabelClone').show());
$('#container:last').before($('#ANDORContainer').clone().prop('id', 'ANDORContainerClone').show());
if ($('ddlProfileClone').show()) {
document.getElementById("ddlProfileClone").disabled = false;
alert("it is new ");
if ($('#ddlProfileClone').prop('disabled', false).on('change ' , function () {
document.getElementById("ddlProfileClone").disabled = true;
alert("it will return to it is new ");
})
);
else if ($('#ddlProfileClone').prop('disabled', false).on('change ' == false, function () {
document.getElementById("ddlProfileClone").disabled = false;
alert("it");
})
);
}
counter++;
$('#AndOrCounter').val(counter);
}
};
答案 0 :(得分:1)
您正在使用相同的ID,因此当您第二次克隆时,您最终会转到guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return}
appDelegate.navigationController.present(picker, animated: true, completion: nil)
,而其他人则相同。
你应该做的是给他们一个id和一个类。例如,每次你克隆你给元素CLASS ddlProfileClone
和ID ddlProfileClone
。
'i'将是一个整数,您每次克隆时都会递增,您将在函数外部声明,以便每次都不会重置id或随机生成的数字。
修改强>
这是我可以提出的最简单的实现,甚至没有ids或任何东西。
使用代码段并在其上构建
'ddlProfileClone' + i
$('#ANDORContainer').on('change', '.ddlANDOR', function() {
$(this)
.prop('disabled', true)
.clone()
.prop('disabled', false)
.appendTo('#ANDORContainer');
});