1

我是一个初学者,我已经编写了一个验证表单的代码:

function validateForm(){
var x=document.forms["myForm"]["fname"].value;
if (x==null || x==""){
alert("First name must be filled out");
return false;
  }}
  <!-- html part-->
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form><br>

此代码的问题是按下提交按钮会触发该validateForm功能。对象失去焦点时如何调用函数?

4

3 回答 3

2

这是我的问题的确切解决方案。当对象失去焦点时,用户会收到某种通知:

<script>
function validate(){
var y = document.getElementById("errorResponse");
var x=document.forms["myForm"]["fname"].value;
    if (x==null || x==""){
        y.innerHTML = "Error";
    }
}
</script>

HTML 表单是:

<form name="myForm">
First name: <input type="text" name="fname" onBlur = "validate()">
<div id = "errorResponse"></div>
<input type="submit" value="Submit">
</form>

可以在 CSS 中将 div 设计为红色以引起用户注意,并且可以玩更多的技巧。

于 2012-09-02T05:54:11.790 回答
1

通过以下方式替换您的输入元素的代码

<input type="text" onblur="return validateForm();" name="fname">

我想这就是你要找的

于 2012-05-19T06:35:04.263 回答
0
<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/示例代码

于 2012-05-19T08:22:10.100 回答