启用所有文本字段,但不启用文件字段

时间:2014-08-18 11:32:57

标签: jquery each disabled-input

我尝试启用此函数中调用的每个文本字段,但我不想启用type="file"字段。会发生什么,无论如何都会启用type="file"字段。我错过了什么吗?

function disabled_fields(fields, state) {
    if(state == true) {
        $(fields).each(function() {
            $(this).attr('disabled', true);
        });
    } else {
        if(state == false) {
            $(fields).each(function() {
                if($(this).attr('type') != 'file') {
                    $(this).attr('disabled', false);
                }
            });
        }
    }
};

// Runs like this
disabled_fields('input, textarea', false);

2 个答案:

答案 0 :(得分:3)

您可以使用.not()排除元素

function disabled_fields(state) {
    $("input,textarea").not("[type='file']").prop("disabled", state);
}

另请注意,您不必遍历每个元素来设置禁用的属性。

答案 1 :(得分:0)

试试这段代码,

function disabled_fields(fields, state) {
    if (state == true) {
        $(fields).each(function () {
            $(this).attr('disabled', true);
        });
    } else if (state == false) {
        $(fields).not("[type='file']").each(function () {
            $(this).attr('disabled', false);
        });
    }
};

Demo