jQuery禁用输入无效

时间:2014-11-30 16:24:18

标签: javascript jquery html

我在页面上有一些输入元素,我试图根据一对单选按钮的设置启用它们或禁用它们。我正在使用以下Javascript函数(为我添加控制台日志记录以查看正在发生的事情)...

function EnableIndividualOrCompanyControls(individual) {
  console.log("EnableIndividualOrCompanyControls(" + individual + ")");
  console.log("Title value is " + $("#Title").val());
  console.log("Title was " + $("#Title").prop("disabled"));
  $("#Title").prop("disabled", !individual);
  console.log("Title is now " + $("#Title").prop("disabled"));
  console.log(" ");
  $("#Surname").prop("disabled", !individual);
  $("#CompanyName").prop("disabled", individual);
}

当单选按钮值更改时,将调用该方法,并且参数具有正确的值,但Title,Surname和CompanyName输入永远不会被禁用。

来自控制台的示例看起来像这样......

EnableIndividualOrCompanyControls(false)
Title value is Sir
Title was false
Title is now false

因此,正在调用函数,参数具有正确的值,我正确地获取了Title输入元素(正如您可以从它正确地报告其值是“Sir”的事实中看到的那样),但是元素没有被禁用。

奇怪的是,我在页面的其他地方使用完全相同的代码,并且它工作正常。这个功能有用......

function EnableOnlineControls(enable) {
  $("#UserName").prop("disabled", !enable);
  $("#Password").prop("disabled", !enable);
  $("#PasswordAgain").prop("disabled", !enable);
}

任何人都知道为什么第一个不起作用?如果它有帮助,这里是这些表单元素的HTML(为清楚起见,删除了周围的div)...

<input class="form-control" id="Title" name="Title" value="" />
<input class="form-control" id="Surname" name="Surname" value="" />
<input class="form-control" id="CompanyName" name="CompanyName" value="" />

我尝试用单引号替换双引号,但这没有任何区别。

1 个答案:

答案 0 :(得分:1)

JQuery readOnly strange behavior的答案解释了您的问题。

individual来自一个复选框;这是一个字符串。你必须将它正确地转换为布尔值:

$("#Surname").prop("disabled", (individual == "false" ? false : true));