我有一个带有几个单选按钮的框架,用户应该在其中选择他的职业所属的“类别”,然后无条件地指定他的职业。
如果用户选择“退休”,则要求在“指定职业”文本框中预填“退休”,并禁用它以防止其被更改。 “指定职业”文本框也不应再是制表位。如果用户选择“退休”以外的单选按钮,则应再次启用“指定职业”文本框,并且“指定职业”文本框应再次处于正常的选项卡序列中。
最初,我正在设置和清除“指定职业”文本框中的禁用属性,然后我发现,在提交表单时,禁用的字段将被排除在提交之外,并且会引发“指定职业”文本框中的“必需”验证器,因为文本框被清空。
解决这个问题的最佳方法是什么?我下面的方法是通过设置/重置文本框上的只读属性并更改背景颜色以使其显示为禁用来模仿禁用的文本框。 (我想我应该改变前景色而不是背景色)。尽管如此,我使文本框只读并重置它的代码似乎不起作用。
function OccupationOnClick(sender) {
debugger;
var optOccupationRetired = document.getElementById("<%= optOccupationRetired.ClientId %>");
var txtSpecifyOccupation = document.getElementById("<%= txtSpecifyOccupation.ClientId %>");
var optOccupationOther = document.getElementById("<%= optOccupationOther.ClientId %>");
if (sender == optOccupationRetired) {
txtSpecifyOccupation.value = "Retired"
txtSpecifyOccupation.readonly = "readonly";
txtSpecifyOccupation.style.backgroundColor = "#E0E0E0";
txtSpecifyOccupation.tabIndex = -1;
}
else {
if (txtSpecifyOccupation.value == "Retired")
txtSpecifyOccupation.value = "";
txtSpecifyOccupation.style.backgroundColor = "#FFFFFF";
txtSpecifyOccupation.readonly = "";
txtSpecifyOccupation.tabIndex = 0;
}
}
有人可以向我提供处理这种情况的最佳方法的建议,并为上面的代码提供一周的时间来修复只读属性的设置/重置吗?
最佳答案
我会使用 jQuery,它非常容易实现...
将文本框设置为只读...
$("#myTxtID").attr('readonly', 'readonly');
将文本框设置为非只读
$("#myTxtID").removeAttr('readonly');
关于asp.net - 使用 Javascript 翻转文本框的只读标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745225/