<html>
<head>
<script type="text/javascript">
function validateForm(oForm){
var els = oForm.elements;
for(var i = 0; i < els.length; i++){
if('string' === typeof(els[i].getAttribute('data-message'))){
return valEl(els[i]);
}
}
}
function valEl(el){
var method = el.getAttribute('data-valMethod');
if('req' === method && (el.value === null || el.value === '')){
alert(el.getAttribute('data-message'));
return false;
}
}
</script>
</head>
<body>
<form name="myForm" action="#" onsubmit="return validateForm(this)" method="post">
First name:
<input data-message="First name must be filled out" data-valMethod="req" onchange="return valEl(this)"; name="fname"><br />
<input type="submit" value="Submit">
</form>
</body>
</html>
如果表单元素上存在所需的数据消息属性,我将其拆分为一个函数,该函数可以验证“onchange”上的元素,另一个函数可以触发 form.onsubmit() 上每个元素的验证。
由于 HTML5 的 Data-* 属性对于这些事情非常方便 :-)
这样您就可以避免将表单和元素的名称存储在验证脚本中,因为您将引用传递给元素本身。这总是一件好事。
从这里您可以扩展 valEl 函数以适应其他类型的验证。
到目前为止,唯一的限制是每个元素只能有一种类型的验证,但这应该很容易解决。
快乐编码。/G
PS http://jsfiddle.net/ePPnn/11/示例代码