【问题标题】:Javascript form field validation not working?Javascript表单字段验证不起作用?
【发布时间】:2010-11-11 11:05:49
【问题描述】:

我正在为一个大学项目做一个简单的网站,其中一个要求是我有 javascript 来验证表单字段输入。我已经实施了我认为可行的解决方案(将其从 W3C 网站上删除),但它似乎根本无法运行?

HTML页面如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Rubber Toy Dept. Inc. Ltd.</title>
    <link href="css/layout.css" type="text/css" rel="stylesheet" />
    <script type="text/javascript" src="scripts/java/validation.js"></script>
</head>

<body>
    <div  id="wrapper">
        <div id="header">
            <h1 id="headlines">Rubber Toy Dept. Inc. Ltd. </h1>
        </div>

        <div id="content">
            <div id="content-main">
                <form action="mailto:gt70@hw.ac.uk" onsubmit="return validate_form(thisform)"  method="post">
                    <table width="858" border="0px">
                        <tr>
                            <td>
                                <input type="checkbox" name="cb1" value="1"></input>
                            </td>
                            <td>
                                Daniel
                            </td>
                            <td>
                                &pound;90
                            </td>
                            <td>
                                <a href="productpages/daniel.xhtml"><img src="pics/daniel_sml.jpg" width="75" height="75" alt="Daniel"></img></a>
                            </td>
                        </tr>
                              <tr>
                            <td>
                                <input type="checkbox" name="cb2" value="1"></input>
                            </td>
                            <td>
                                Graeme
                            </td>
                            <td>
                                &pound;80
                            </td>
                            <td>
                                <a href="productpages/graeme.xhtml"><img src="pics/graeme_sml.jpg" width="75" height="75" alt="Graeme"></img></a>
                            </td>
                          </tr>
                              <tr>
                            <td>
                                <input type="checkbox" name="cb3" value="1"></input>
                            </td>
                            <td>
                                Lewis
                            </td>
                            <td>
                                &pound;10
                            </td>
                            <td>
                                <a href="productpages/lewis.xhtml"><img src="pics/lewis_sml.jpg" width="75" height="75" alt="Lewis"></img></a>
                            </td>
                          </tr>
                              <tr>
                            <td>
                                <input type="checkbox" name="cb4" value="1"></input>
                            </td>
                            <td>
                                Conor
                            </td>
                            <td>
                                &pound;1 (bargain!)
                            </td>
                            <td>
                                <a href="productpages/conor.xhtml"><img src="pics/conor_sml.jpg" width="75" height="75" alt="Conor"></img></a>
                            </td>
                          </tr>
                        </table>

                    <table width="858" border="0px">
                        <tr>
                            <td>
                                Username
                            </td>
                            <td>
                                <input type="text" name="username" id="username"></input>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                E-mail Address
                            </td>
                            <td>
                                <input type="text" name="email" id="email"></input>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Address
                            </td>
                            <td>
                                <input type="text" name="address" id="address"></input>
                            </td>
                        </tr>
                        <tr>
                            <td></td>
                            <td>
                                <input type="submit" name="submit" value="submit"></input>
                            </td>
                        </tr>
                    </table>
                </form>
            </div>

            <div id="w3c">
                <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
            </div>

            <div id="footer">
                <i>Coded and Designed by G.A Tinsdale, D. Scott and L. Mclean</i>
                </div>
            </div>

            <div id="bottom">
        </div>
    </div>  
</body>

并且 Javascript 文件包含:

function validate_required(field,alerttxt)
        {
            with (field)
            {
                if (value==null||value=="")
                {
                    alert(alerttxt);
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }

        function validate_form(thisform)
        {
            with (thisform)
            {
                if (validate_required(email,"Email must be filled out!")==false)
                {
                    email.focus();
                    return false;
                }

                if (validate_required(username,"Username must be filled out!")==false)
                {
                    username.focus();
                    return false;
                }

                if (validate_required(address,"Address must be filled out!")==false)
                {
                    address.focus();
                    return false;
                }
            }
        }

对不起,如果我的代码布局有误...我似乎不明白如何正确地做到这一点:(

感谢您提供的任何帮助

丹尼尔。

【问题讨论】:

  • 顺便说一下,您的浏览器应该已经为您提供了与“找不到对象:验证”类似的错误消息。如果您没有收到有用的消息,请为此类工作购买更好的浏览器!注意此输出将帮助您更轻松地查明错误。
  • 现在已排序。感谢所有提供帮助的人:)

标签: javascript validation forms field


【解决方案1】:

更新:

@Matthew Wilson 正确指出,您的验证文件存在 404 错误:

<script type="text/javascript" src="script/java/validation.js">
       ----------------------------------------^

确保您指定了正确的路径并且文件存在。


这里的问题:

onsubmit="return validation.js:validate_form(thisform)"

应该是:

onsubmit="return validate_form(thisform)"

【讨论】:

  • 确实如此。当你引用一个外部 JS 文件时,它的所有全局声明都被导入到页面的命名空间中,所以它们不需要以脚本名称为前缀。
  • 好的,但这似乎仍然不起作用。我已经把文件上传到这里了,你可以自己检查一下吗? rvddps.com/Updated%20Structure/index.xhtml
  • 尝试加载 Javascript 文件时出现 404 错误。
  • 似乎是说javascript中的with(字段)行有错误?我不知道那是什么?
  • 'with' 是一个非常讨厌的结构,可能会导致细微的错误。不过这里应该没问题。
【解决方案2】:

您是否在页面中包含了脚本文件: &lt;script type="text/javascript" src="validation.js"&gt;&lt;/script&gt;。接下来从表单的 onsubmit 中删除 validation.js:... 这不是必需的。如果还是不行,那就调试一下吧。在您的验证表单功能中粘贴一个警报(“提交的表单”),看看它是否会触发。如果不是,您需要找出原因,如果是,请在函数树的下方放置警报以了解发生了什么。

【讨论】:

    【解决方案3】:

    查看您提供的 URL,您的脚本标记全部错误

    第 7 行

    <script type="text/javascript" src="script/java/validation.js">
    

    应该是

    <script type="text/javascript" src="script/java/validation.js"></script>
    

    第 8 行

    <script>
    

    应该是

    <script type="text/javascript">
    

    并删除第 50 行多余的脚本标签

    </script>
    

    【讨论】:

    • 对于 HTML5,我认为您根本不需要 type 属性,但这是 XHTML,因此它是此 doctype 的必需属性,尽管我认为它只会影响 HTML 验证,因为现代浏览器仍将块作为 JavaScript 执行。 stackoverflow.com/questions/5265202/…
    猜你喜欢
    • 1970-01-01
    • 2012-02-08
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多