代码之家  ›  专栏  ›  技术社区  ›  Josh Curren

用javascript验证表单数据并显示图形

  •  0
  • Josh Curren  · 技术社区  · 16 年前

    我以前没有真正使用过javascript,但是我正在尝试在表单元素被填充时验证它们。我有一个X和一个复选标记,我试图显示在字段旁边,以显示它是否有效。我知道这是部分正确的,因为我可以使用警报,但我不确定如何更改图形的字段。

    JavaScript:

    function validate_field(field)
    {
        var value = document.newAccount.fname;
        if (value==null||value=="")
        {
            document.fnameX.visibility = visible;
            document.fnameOK.visibility = hidden;
           //alert("FAIL");
           return false;
        }
        else
        {
            document.fnameX.visibility = hidden;
            document.fnameOK.visibility = visible;
          //alert("TRUE");
          return true;
        }
    }
    

    一些HTML:

      <form action="XXXXX" method="post" name="newAccount">
    
        <table width="78%" border="0" align="center">
              <tr>
             <td colspan="2"><strong>Personal Info:</strong> </td>
              </tr>
              <tr>
                <td width="24%"><div align="right">First Name: </div></td>
                <td width="76%">
                  <input type="text" onchange="return validate_field(this)"  onfocus="return validate_field(this)" name="fname" tabindex="1" size="50"/> 
                  <img name="fnameX" src="redx.jpg" style="visibility:hidden" alt="X" width="18" height="18" /><img name="fnameOK" src="checkmark.jpg" style="visibility:hidden"  alt="Ok" width="18" height="18" /></td>
              </tr>
              <tr>
                <td><div align="right">Last Name: </div></td>
                <td><input type="text" name="lname" tabindex="2" size="50"/></td>
              </tr>
        </table>
        </form>
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Ryan Lynch    16 年前

    你最好用CSS类来做类似的事情。

    .valid
    {
         padding-right:15px 
         /*or whatever the width of your graphic is*/
         background:url('checkmark.jpg') center right no-repeat; 
         /*remember that the url is relative to the stylesheet*/
    }
    
    .invalid
    {
         padding-right:15px 
         background:url('redx.jpg') center right no-repeat; 
    }
    

    然后,验证函数变为:

    function validate_field(field)
    {
        var value = field.value;
        if (value==null||value=="")
        {
           field.parentNode.className = 'invalid';
           return false;
        }
        else
        {
           field.parentNode.className = 'valid';
           return true;
        }
    }
    

    编辑:

    记住要记住可访问性,除非使用警报或使用 ARIA 属性使用辅助设备的用户将很难使用您的表单。

    编辑:

    Here 是您的代码中的一个工作示例,我在其中更改表单输入的父表单元格的背景色。

    编辑:

    here 就是这样一个例子,我去掉了那些不太好的布局表,并用 fieldset 对javascript进行了一些修改。如果您不熟悉jsbin,可以附加 /edit 到要查看/修改代码的URL, like so .