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));