使用javascript / jQuery在IE9及更低版本中禁用/ readonly输入文本

时间:2014-01-31 14:50:11

标签: javascript jquery html text input

任何人都知道如何做到这一点?

我在下面尝试过的JavaScript无效。

element.readOnly="true";
element.readonly="readonly";
element.disabled="disabled";

尝试下面的jQuery也没有用。

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

我做错了什么或是否有另一种方法来实现ie9及以下?

谢谢

2 个答案:

答案 0 :(得分:4)

如果要在元素上设置 属性 值,则需要使用与您正在设置的属性相等的字符串。例如,如果您要设置disabled属性,则应将其设置为"disabled"

HTML

<input type="text" disabled="disabled" />

的JavaScript

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

如果您要设置 属性 值,则需要使用布尔值:truefalse。属性仅在JavaScript中设置:

的JavaScript

element.disabled = true;

在上面的第一个示例中,您将JavaScript属性设置为字符串,而不是布尔值。这就是它无效的原因。

以下是适合您的可能性:

//Any of the following work
element.readOnly = true; //It is readOnly, not readonly
element.disabled = true;

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

//Additionally, you can use jQuery's prop() method, but I don't recommend it.
$("#id").prop("disabled", true);
$("#id").prop("readOnly", true);
$("#id").prop("readonly", true); //jQuery will bridge the gap here, and fix this for you.

了解disabledreadonly提供不同的功能也很重要:

  • disabled表示您根本无法与元素进行交互。 disabled的元素是不可变的,这意味着它们的值不能被修改。表格提交中也省略了它们。
  • readonly表示您根本无法更改元素的值。

答案 1 :(得分:1)

disabledreadonly属性不是属性。

这种区别非常重要,因为jQuery提供了一种不同的方法来设置属性与属性。

您应该使用$().prop()而不是$().attr()来设置它们。

$("#id").prop("disabled",true);
$("#id").prop("readonly",true);

使用.attr()无效。 (它曾经在jQuery 1.5的时代起作用,但是因为他们在jQuery 1.6中引入了.prop()而没有这样做)