2013-02-05 78 views
9

请更正下面的代码是不工作的,即预期的,我需要显示只是在形式的文本框旁的错误消息,当用户输入一个无效的名称要在Java脚本显示错误消息而不警告框

<html> 
    <head> 
    <script type="text/javascript"> 
    function validate() { 
    if(myform.fname.value.length==0) 
    { 
    document.getElementById("fname").innerHTML="this is invalid name "; 
    } 
    } 
    </script> 
    </head> 
    <body> 
    <form name="myform"> 
    First_Name 
    <input type=text id=fname name=fname onblur="validate()"> </input> 

    <br> <br> 
    Last_Name 
    <input type=text id=lname name=lname onblur="validate()"> </input> 

    <br> 
    <input type=button value=check> 

    </form> 
    </body> 
</html> 
+0

不直接关系到你的问题,但你的HTML错过了引号的属性值。你应该*不要*想念他们。另外,''不需要''。如果编写XHTML,它应该是自闭的。 –

+0

它不是'.innerHTML',它是'value' –

+0

您好@legendinmaking当我使用'值'在文本框内获取错误信息,但需求位于文本框旁边。 – user2042156

回答

2

你可以尝试这样的

<html> 
      <head> 
      <script type="text/javascript"> 
      function validate() 
      { 
      var fnameval=document.getElementById("fname").value; 
      var fnamelen=Number(fnameval.length); 
       if(fnamelen==0) 
       { 
        document.getElementById("fname_msg").innerHTML="this is invalid name "; 
       } 
      } 
      </script> 
      </head> 
      <body> 
      <form name="myform"> 
      First_Name 
      <input type=text id=fname name=fname onblur="validate()"> </input> 
      <span id=fname_msg></span> 
      <br> <br> 
      Last_Name 
      <input type=text id=lname name=lname onblur="validate()"> </input> 

      <br> 
      <input type=button value=check> 

      </form> 
      </body> 
     </html> 
+0

我试过甚至没有看到该事件正在触发...... :( – user2042156

0

设定输入值的innerHTML不会做什么好东西在这里,试图用像其他跨度元素,或者只显示先前作出和隐藏的错误消息。 您可以设置名称字段的值。

<head> 
    <script type="text/javascript"> 
     function validate() { 
      if (myform.fname.value.length == 0) { 
       document.getElementById("fname").value = "this is invalid name "; 
       document.getElementById("errorMessage").style.display = "block"; 
      } 
     } 
    </script> 
</head> 

<body> 
    <form name="myform">First_Name 
     <input type="text" id="fname" name="fname" onblur="validate()"></input> <span id="errorMessage" style="display:none;">name field must not be empty</span> 

     <br> 
     <br>Last_Name 
     <input type="text" id="lname" name="lname" onblur="validate()"></input> 
     <br> 
     <input type="button" value="check" /> 
    </form> 
</body> 

FIDDLE

5

网站管理员或Web程序员,请在您的页面开始插入

<!DOCTYPE html> 

。其次,你应该以引号的属性,如

type="text" id="fname" 

输入元素不应该包含结束元素,只是将其关闭,如:

/> 

输入元素不具有innerHTML,它有value SOR您的JavaScript行应该是:

document.getElementById("fname").value = "this is invalid name"; 

请用有组织的方式写和ma确保标准方便。

0

首先,您正在尝试写入输入字段的innerHTML。这不起作用。您需要有一个div或跨度来写入。尝试是这样的:

First_Name 
<input type=text id=fname name=fname onblur="validate()"> </input> 
<div id="fname_error"></div> 

然后改变你的验证函数读取

if(myform.fname.value.length==0) 
    { 
    document.getElementById("fname_error").innerHTML="this is invalid name "; 
    } 

其次,我总是犹豫不决使用的onblur这种事情。可以在不退出该字段的情况下提交表单(例如,返回键),在这种情况下,您的验证代码将不会被执行。我更喜欢从提交表单的按钮运行验证,并且只有在文档已通过验证时才从函数内部调用submit()。

8

试试这个代码

<html> 
<head> 
<script type="text/javascript"> 
function validate() { 
    if(myform.fname.value.length==0) 
    { 
document.getElementById('errfn').innerHTML="this is invalid name"; 
    } 
} 
</script> 
</head> 
<body> 
<form name="myform"> 
    First_Name 
    <input type=text id=fname name=fname onblur="validate()"> </input><div id="errfn"> </div> 

<br> <br> 
Last_Name 
<input type=text id=lname name=lname onblur="validate()"> </input> 

<br> 
<input type=button value=check> 

</form> 
</body> 
</html> 
0

尝试这样的:

function validate(el, status){ 
    var targetVal = document.getElementById(el).value; 
    var statusEl = document.getElementById(status); 
    if(targetVal.length > 0){ 
     statusEl.innerHTML = ''; 
    } 
    else{ 
     statusEL.innerHTML = "Invalid Name"; 
    } 
} 

现在HTML:

<!doctype html> 
<html lang='en'> 
<head> 
<title>Derp...</title> 
</head> 
<body> 
<form name="myform"> 
    First_Name 
    <input type="text" id="fname" name="fname" onblur="validate('fname','fnameStatus')"> 
    <br /> 
    <span id="fnameStatus"></span> 
    <br /> 
    Last_Name 
    <input type="text" id="lname" name="lname" onblur="validate('lname','lnameStatus')"> 
    <br /> 
    <span id="lnameStatus"></span> 
    <br /> 
    <input type=button value=check> 
</form> 
</body> 
</html> 
0

您应该使用.value的,而不是。innerHTML的,因为它是一个输入的表单元素

<html> 
    <head> 
    <script type="text/javascript"> 
    function validate() { 
    if(myform.fname.value.length==0) 
    { 
    document.getElementById("fname").value="this is invalid name "; 
    } 
    } 
    </script> 
    </head> 
    <body> 
    <form name="myform"> 
    First_Name 
    <input type=text id=fname name=fname onblur="validate()"> </input> 

    <br> <br> 
    Last_Name 
    <input type=text id=lname name=lname onblur="validate()"> </input> 

    <br> 
    <input type=button value=check> 

    </form> 
    </body> 
</html> 
1

试试这个

<html> 
    <head> 
    <script type="text/javascript"> 
    function validate() { 
    if(myform.fname.value.length==0) 
    { 
    document.getElementById("error").innerHTML="this is invalid name "; 
    document.myform.fname.value=""; 
    document.myform.fname.focus(); 
    } 
    } 
    </script> 
    </head> 
    <body> 
    <form name="myform"> 
    First_Name 
    <input type="text" id="fname" name="fname" onblur="validate()"> </input> 
<span style="color:red;" id="error" > </span> 
    <br> <br> 
    Last_Name 
    <input type="text" id="lname" name="lname" onblur="validate()"> </input> 

    <br> 
    <input type=button value=check> 

    </form> 
    </body> 
</html> 
4

余米同意@ ReNjITh.R的答案,但如果你想只显示文本框旁边的错误消息。就像下面

enter image description here

<html> 
<head> 
<script type="text/javascript"> 
    function validate() 
    { 
     if(myform.fname.value.length==0) 
     { 
      document.getElementById('errfn').innerHTML="this is invalid name"; 
     } 
    } 
</script> 
</head> 
<body> 
    <form name="myform"> 
     First_Name 
     <input type=text id=fname name=fname onblur="validate()" /><span id="errfn"></span> 
     <br> <br> 
     Last_Name 
     <input type=text id=lname name=lname onblur="validate()"/><br> 
     <input type=button value=check /> 
    </form> 
</body> 

+0

可以请你把你写的整个代码......这将是一个很好的帮助 – user2042156

+0

现在你可以检查我的编辑代码。 –

1

你也可以试试这个


<tr> 
    <th>Name :</th> 
    <td><input type="text" name="name" id="name" placeholder="Enter Your Name"><div id="name_error"></div></td> 
</tr> 



    function register_validate() 
{ 
    var name = document.getElementById('name').value; 
    submit = true; 
    if(name == '') 
    { 
     document.getElementById('name_error').innerHTML = "Name Is Required"; 
     return false; 
    } 
    return submit; 
} 
document.getElementById('name').onkeyup = removewarning; 
function removewarning() 
{ 
    document.getElementById(this.id +'_error').innerHTML = ""; 
}