jquery动态输入禁用和刷新更改

时间:2014-07-10 18:28:45

标签: jquery ajax json

我正在使用需要在禁用和启用之间来回切换的输入元素。当用户从下拉菜单中选择年份时,应在input元素中禁用该特定年份。但是,当用户更改一年时,应禁用新年。

这是我提出的jQuery。它工作正常,除非它在进行新的更改时不刷新。即可以禁用多年,这不适合应用程序。在任何特定时间只能禁用一年。

$.getJSON('/ResidentialBuilding/getYear', function (data) {
    $.each(data, function (index, value) {
        $("#standards").append('<input type="checkbox" value="' + value.year + '"' + 'id="' + value.year + '">' + value.year + '</input><br>');
    });
});
$("#ResidentialStandardYear").change(function () {
    standardValue = $("#ResidentialStandardYear").val();
    console.log(standardValue);
    disabled = "";
    if (standardValue == $("#" + standardValue).attr('id')) {
        console.log($('#' + standardValue));
        disabled = "disabled";
        $('#' + standardValue).attr('disabled', disabled);
    }
});

以下是视觉参考的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:1)

在新复选框上启用一个属性时,您似乎需要清除所有其他"disabled"属性。应该采取的措施:

$("#ResidentialStandardYear").change(function () {
    standardValue = $("#ResidentialStandardYear").val();
    console.log(standardValue);
    disabled = "";
    if (standardValue == $("#" + standardValue).attr('id')) {
        console.log($('#' + standardValue));
        disabled = "disabled";
        $('#' + standardValue).attr('disabled', disabled);
        $('input[type=checkbox]').not('#' + standardValue).attr('disabled', false);
    }
});

另外,请记住,对.attr('disabled', disabled)的调用期望是布尔值,而不是字符串。调用.attr('disabled', '').attr('disabled', 'disabled')都会禁用输入。