使用JavaScript在IE中正确设置已禁用的属性

时间:2013-07-16 20:58:57

标签: javascript jquery html internet-explorer

我相信这只是我的第二篇文章,所以在这里。 我正在处理一个管理信用卡的HTML表单。该表单有一个javascript页面,可以在提交时进行所有验证。 表单上的邮政编码字段有一个onblur操作,用于查询数据库中的邮政编码以填充城市/国家/地区字段。在数据库中,可以为邮政编码设置多个位置,其中会出现一个浮动div,让用户选择他们想要使用的地址。

当它运行时,它首先使用此功能块禁用表单上的所有字段:

for(f=0;f<document.forms.length;f++)
{
    for(i=0;i<document.forms[f].elements.length;i++)
    {
       if (document.forms[f].elements[i].disabled==true)
          keepDisabled += document.forms[f].name + document.forms[f].elements[i].name + "^";

       document.forms[f].elements[i].disabled=true;
    }
 }

然后,当用户选择一个地址时,它会启用该部分的所有字段:

for(f=0;f<document.forms.length;f++)
{
    for(i=0;i<document.forms[f].elements.length;i++)
    {
       if (keepDisabled.indexOf("^"+document.forms[f].name+document.forms[f].elements[i].name+"^") == -1)
          document.forms[f].elements[i].disbaled=true;
    }
}

因此,对于keepDisabled变量中的任何元素,应跳过disabled = true。奇怪的是它在FireFox / Chrome中运行良好,但在IE中,它可以对字段进行一半的启用。禁用字段会丢失灰色,输入/文本字段无法编辑,这仍然很好,而选择仅在双击时激活。

我也尝试过使用这些禁用代码:

document.forms[f].elements[i].prop("disabled", "disabled");
document.forms[f].elements[i].attribute("disabled, "disabled");

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:1)

由于您标记了jQuery,请使用:

$("#id").attr("disabled", true);

$("#id").attr("disabled", false);