2

我想检查文本框是否包含名称。如果没有,那么在按下提交按钮后应该会弹出一条警报,显示一条消息,并且页面不应该提交空白值。如果它包含值,则应提交该值。

我正在使用下面的代码。当我将文本框留空并单击提交按钮时,它会按预期显示警报,但在解除警报后也会提交空值。

<html>
    <head>
        <script type="text/javascript">

            function check()
            {
                if (!frm1.FileName.value)
                {
                    alert ("Please Enter a File Name");
                    return (false);
                }
                return (true);
            }

        </script>
    </head>
    <body>
        <form name="frm1" id="frm1" action="/cgi-bin/page.pl" method="POST">
            <input type="text" name="FileName" id="FileName">       
            <input type="submit" value="send" name="btn_move" id="btn_move" onclick="check()">
        </form>
    </body>
</html>

代码中的问题是什么?

4

3 回答 3

7

你需要做onclick="return check();"

于 2013-07-23T08:07:38.457 回答
4

试试这个

<html>
    <head>
        <script type="text/javascript">

            function check()
            {
                if (document.getElementById('FileName').value==""
                 || document.getElementById('FileName').value==undefined)
                {
                    alert ("Please Enter a File Name");
                    return false;
                }
                return true;
            }

        </script>
    </head>
    <body>
        <form name="frm1" id="frm1" action="/cgi-bin/page.pl" method="POST">
            <input type="text" name="FileName" id="FileName">       
            <input type="submit" value="send" name="btn_move" id="btn_move" onclick="return check();">
        </form>
    </body>
</html>
于 2013-07-23T08:09:26.633 回答
1

false从 中返回check,但您没有从事件处理程序中返回值。

只有当事件处理程序返回时false,才会阻止默认操作(在这种情况下提交表单):

onclick="return check();"

查看 quirksmode.org 上对事件处理程序的精彩介绍,了解有关事件处理的基础知识(并了解比内联事件处理程序更好的方法)。


一般来说,最好不要在按下提交按钮时而是在提交表单之前执行这些检查。因此,与其将处理程序绑定到按钮上的单击事件,不如将其绑定到表单的提交事件,例如(使用传统的事件处理程序):

document.getElementById('frm1').onsubmit = function() {
    if (!this.FileName.value) {
        alert ("Please Enter a File Name");
        return false;
    }
};

优点是将对所有表单提交进行检查,而不仅仅是在单击提交按钮时(例如,如果提交按钮是通过按下回车键“执行”的)。

于 2013-07-23T08:23:57.393 回答