JQuery下拉菜单是只读但未禁用

时间:2014-07-10 13:33:23

标签: javascript jquery ajax

我有一个页面上有一个表单,如果用户以非管理员帐户登录,则这些字段应该是只读的。所有文本字段都表现正常,但下拉菜单仍允许更改值。

function setReadonly(){
    //Text Fields
    id_first_name.readOnly=true;
    id_middle_name.readOnly=true;
    id_last_name.readOnly=true;
    id_last_4_ssn.readOnly=true;
    //Dropdowns
    $("#id_gender").attr("readonly", true);
    $("#id_department").attr("readonly", true);
}

下拉栏与文本字段一样显示为灰色,但可以像往常一样更改选项。我试过了

$("#id_gender").attr("disabled", true);
$("#id_gender").attr("disabled", "disabled");
$("#id_gender").prop("disabled", "disabled");

这两个attr并没有解决问题,而道具失败是因为我正在运行v1.5

2 个答案:

答案 0 :(得分:1)

$("id_gender").attr("disabled", true);
$("id_gender").attr("disabled", "disabled");
$("id_gender").prop("disabled", "disabled");

以上所有语句都有选择器,将应用于标签“id_gender”

但是从您在问题中发布的函数中我相信上述3个语句将应用于id为“id_gender”的元素。因此,请在选择器跟随之前添加“#”,这是正确的语法:

$("#id_gender").attr("disabled", true);
$("#id_gender").attr("disabled", "disabled");
$("#id_gender").prop("disabled", "disabled");

如果这有用或者您有任何疑问,请告诉我。

答案 1 :(得分:0)

事实证明,在ajax调用返回表单数据之前,我将字段设置为只读和禁用。当它试图将数据填入禁用字段时,它会自动启用它。这些字段都是只读的,但任何已禁用的attr都被删除了。

需要做

$(document).ajaxStop(function(){
    [if user.readonly] setReadonly();
});

$("#id_gender")。attr("禁用",true)工作正常。