jQuery禁用输入无法正常工作

我在页面上有一些输入元素,我试图根据一对单选按钮的设置启用它们或禁用它们。 我正在使用以下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有效……

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

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

    

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

JQuery readOnly奇怪的行为的答案解释了你的问题。

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

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