var textboxs = new Array(); // 텍스트 유형 입력 컬렉션
var radioList = new Object(); // 라디오는 특별하고 그룹별로 감지되어야 하므로 여기서는 하나를 사용합니다. Hashtable, 라디오 이름을 기준으로 모든 라디오 컬렉션을 Key
var radioes; // 각 이름에 해당하는 라디오 컬렉션
var inputs = myform.getElementsByTagName("INPUT") // 아래 양식 가져오기 모든 입력
]<script>
function fn(myform)
{
var ipt;
var textboxs = new Array(); // text类型的input集合
var radioList = new Object(); // radio类型的input集合,因为Radio比较特殊,要一组一组检测,所以这里用一个Hashtable,根据radio的name作为Key来保存所有的Radio集合
var radioes; // 每一个name对应的Radio集合
var inputs = myform.getElementsByTagName("INPUT"); // 取form下的所有input
// 遍历所有INPUT
//
for (var i=0; i<inputs.length; i++)
{
ipt = inputs[i ];
if (ipt.type == "text")
{
textboxs[textboxs.length] = ipt;
}
// 本来只要检测radiobox的,后来要增加checkbox,
//因为处理方式一样,只要这里修改一下就可以了,但是命名没有同步修改:)
//
else if (ipt.type == "radio" || ipt.type == "checkbox")
{
radioes = radioList[ipt.name];
if (!radioes)
{
radioes = new Array();
}
radioes[radioes.length] = ipt;
radioList[ipt.name] = radioes;
}
}
// 非空检测
//
for (var i=0; i<textboxs.length; i++)
{
var txt = textboxs[i ];
if (txt && txt.value == "")
{
alert("please fill:" + txt.name);
txt.focus();
return false;
}
}
// 遍历所有Radiobox组
//
for (var radioboxName in radioList)
{
radioes = radioList[radioboxName];
var chk = false; // 是否有选中的
var radio;
// 检测该组Radio是否都选中了
//
for (var j=0; j<radioes.length; j++)
{
var radio = radioes[j];
if (radio.checked)
{
chk = true;
break;
}
}
if (!chk) // 没有选中的
{
alert("please select: " + radioboxName);
return false;
}
}
return true;
}
</script>