var textboxs = new Array(); // テキスト タイプの入力コレクション
var radioList = new Object(); // Radio は特殊であり、グループごとに検出する必要があるため、ここでは 1 つを使用します。ハッシュテーブル。ラジオの名前に基づいてすべてのラジオ コレクションをキーとして保存します。
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>