您的位置:首页 > 其它

如何设置Select下拉框、CheckBox、Radio的ReadOnly属性?

2009-02-27 14:14 621 查看
因为Select下拉框只支持disabled属性,不支持readOnly属性,

而在提交时,disabled的控件,又是不提交值的

 

使用如下的js脚本处理一下,支持下拉框、CheckBox、Radio:

<textarea cols="90" rows="58" name="code" class="javascript">function SetReadOnly(obj, backgroundColor) {
if (obj) {
var ieVer = GetIeVersion();// 获取IE版本
if (obj.type == 'select-one') {
// 下拉框时
if (ieVer > 6) {
obj.onfocus = function() {
var index = this.selectedIndex;
this.onchange = function() {
this.selectedIndex = index;
};
};
} else {
obj.onbeforeactivate = function() { return false; };
obj.onfocus = function() { obj.blur(); };
obj.onmouseover = function() { obj.setCapture(); };
obj.onmouseout = function() { obj.releaseCapture(); };
}
} else if (obj.type == 'checkbox') {
// 复选框时
obj.onclick = function() { return false; };
} else if (obj.type == 'radio') {
// 单选框时,设置所有具有相同name的radio为只读
if (obj.name) {
var arr = document.getElementsByName(obj.name);
var len = arr.length;
var tmp = null;
for (var i = 0; i < len; i++)
if (arr[i].checked) {
tmp = arr[i];
break;
}
var func;
if (tmp)
func = function() { tmp.checked = true; };
else
func = function() { return false; };
for (var i = 0; i < len; i++)
arr[i].onclick = func;
} else
obj.onclick = function() { return false; };
} else {
obj.readOnly = true;
if (obj.type == 'text')
obj.style.borderWidth = '0px';
}

if (backgroundColor)
obj.style.backgroundColor = backgroundColor;
}
}

function GetIeVersion() {
var exp;
try {
var str = navigator.userAgent;
var strIe = 'MSIE';
if (str && str.indexOf(strIe) >= 0) {
str = str.substring(str.indexOf(strIe) + strIe.length);
str = str.substring(0, str.indexOf(';'));
return parseFloat(str.trim());
}
}
catch (exp) {
}
return 0;
}

</textarea>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  function 脚本 null ie