我在页面上有一些输入元素,我试图根据一对单选按钮的设置启用它们或禁用它们。我正在使用以下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="" />
我尝试用单引号替换双引号,但这没有任何区别。
答案 0 :(得分:1)
JQuery readOnly strange behavior的答案解释了您的问题。
individual
来自一个复选框;这是一个字符串。你必须将它正确地转换为布尔值:
$("#Surname").prop("disabled", (individual == "false" ? false : true));