我想根据其他值在选择菜单中禁用或启用某些选项。在该示例中,用户将输入权重(在页面上的stepOne),如果该值大于3,则选项" quad" (必须禁用页面上的步骤2)。如果该值小于或等于3,则选项" quad"必须启用。
html包含一个权重输入,然后是一个触发stepOneSubmission的提交按钮。下面的代码会发生什么:如果权重高于3,页面将不会改变 - 我认为它会在刷新时卡住 - 也许是因为尚未创建选择菜单因此无法刷新???如果用户输入的权重低于3,则页面将更改为stepTwo。如果用户然后导航回stepOne并输入高于3的权重,则stepOne Submission这次工作,并且" quad"被禁用。
function stepOneSubmission() {
var weight = $('#weight').val();
$('#weightTwo').val(weight);
var strengthSelect=$("#strength");
if (weight>3)
{
$("#strength option[value=4]").prop('disabled',true);
strengthSelect.selectmenu("refresh");
$.mobile.pageContainer.pagecontainer("change", "#stepTwo");
}
$.mobile.pageContainer.pagecontainer("change", "#stepTwo");
};
function stepTwoSubmission() {
$.mobile.pageContainer.pagecontainer("change", "#theReport");
};
答案 0 :(得分:0)
我没有成功采用上述方法。相反,我从表单提交中拆分了选择选项更改。我创建了一个新函数setStrengthValues来根据权重重建选择选项,并在权重字段的关键字上运行。
function setStrengthValues(){
var weight = $('#weight').val();
$('#weightTwo').val(weight);
var strengthSelect=$("#strength");
var selectValues = [{"single": "Single", "double": "Double", "quad": "Quad"}];
if (weight >= 3) {
$("#strength").find('option').remove();
$(selectValues[0]).each(function (key, value) {
$.each(selectValues[0], function (key, value) {
strengthSelect
.append($("<option></option>")
.attr("value", key)
.text(value));
});
});
strengthSelect.find('option:contains(' + selectValues[0].quad + ')').remove();
strengthSelect.val('Single');
strengthSelect.selectmenu("refresh");
}
else {
$("#strength").find('option').remove();
$(selectValues[0]).each(function (key, value) {
$.each(selectValues[0], function (key, value) {
strengthSelect
.append($("<option></option>")
.attr("value", key)
.text(value));
});
});
strengthSelect.val('Single');
strengthSelect.selectmenu("refresh");
}
};
function stepOneSubmission() {
$.mobile.pageContainer.pagecontainer("change", "#stepTwo");
};