Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript表单验证不做任何事情_Javascript_Html_Forms_Validation - Fatal编程技术网

javascript表单验证不做任何事情

javascript表单验证不做任何事情,javascript,html,forms,validation,Javascript,Html,Forms,Validation,我试图确保输入字段的内容在允许的字符数内,如果输入字段后没有打印出错误消息。bellow js包含在外部js文件中 function validateForm() { var err_msg = getElementById('feedback_msg_first_name').value; var first_name = getElementById('first_name').value; if(first_name.leng

我试图确保输入字段的内容在允许的字符数内,如果输入字段后没有打印出错误消息。bellow js包含在外部js文件中

    function validateForm()
    {
        var err_msg = getElementById('feedback_msg_first_name').value;
        var first_name = getElementById('first_name').value;
        if(first_name.length < 2)
        {
            err_msg.innerHTML = 'first name cannot contain less than 2 characters';
            return false;
        }
        if(first_name.length > 20)
        {
            err_msg.innerHTML = 'first name cannot contain more than 20 characters';
            err_msg.style.color = 'red';
        }
    }
函数validateForm()
{
var err_msg=getElementById('feedback_msg_first_name')。值;
var first\u name=getElementById('first\u name')。值;
如果(名字长度<2)
{
err_msg.innerHTML='名字不能包含少于2个字符';
返回false;
}
如果(名字长度>20)
{
err_msg.innerHTML='名字不能包含超过20个字符';
err_msg.style.color='red';
}
}
基本标记

<script type="text/javascript" language="javascript" src="client_form_val.js"></script>
</head>
<body>
<form id="register"  name="register" action="includes/register.inc.php" method="post" onsubmit ="return validateForm();">
    <label class="label">First Name:</label>        <input type="text" name="first_name" id="first_name" /><br />
    <span id="feedback_msg_first_name"></span>

名字:

表单只是简单地提交,没有发生任何事情。我哪里出错了?如果有任何帮助,我们将不胜感激。

在表单中触发keyup事件时,您正在调用该函数。因此,当用户在键入单个字符后开始键入其姓名时,将显示错误消息


不要在触发keyup事件时调用函数,而是在某个按钮单击时调用该函数(当键入整个名字时)。

您忘记执行document.getElementById。Firebug在以下方面给出错误

获取错误:

Uncaught ReferenceError: getElementById is not defined 
当你修复丢失的文件时,你会得到这个

Uncaught TypeError: Cannot set property 'innerHTML' of undefined 
第二个原因是这样的

var err_msg = getElementById('feedback_msg_first_name').value;  <-- string
err_msg.innerHTML = 'first name cannot contain less than 2 characters';  <--performing innerHTML on string
var err\u msg=getElementById('feedback\u msg\u first\u name')。值 试试这个

 function validateForm()
{
    var err_msg = document.getElementById('feedback_msg_first_name');
    var first_name = document.getElementById('first_name').value;
    if(first_name.length < 2)
    {
        err_msg.innerHTML = 'first name cannot contain less than 2 characters';
        return false;
    }
    if(first_name.length > 20)
    {
        err_msg.innerHTML = 'first name cannot contain more than 20 characters';
        err_msg.style.color = 'red';
    }
}
函数validateForm()
{
var err_msg=document.getElementById('feedback_msg_first_name');
var first\u name=document.getElementById('first\u name')。值;
如果(名字长度<2)
{
err_msg.innerHTML='名字不能包含少于2个字符';
返回false;
}
如果(名字长度>20)
{
err_msg.innerHTML='名字不能包含超过20个字符';
err_msg.style.color='red';
}
}

请查看以下内容

与其解释你哪里出了问题,不如想想你需要试着去理解为什么这是有效的,而你的答案是无效的

  function validateForm() {
        var err_msg = document.getElementById('feedback_msg_first_name');
        var first_name = document.getElementById('first_name').value;

        if(first_name.length < 2) {
            err_msg.innerHTML = 'first name cannot contain less than 2 characters';
            return false;
        } else {
            err_msg.innerHTML = '';
        }
        if(first_name.length > 20)
        {
            err_msg.innerHTML = 'first name cannot contain more than 20 characters';
            err_msg.style.color = 'red';
        }
    }
函数validateForm(){
var err_msg=document.getElementById('feedback_msg_first_name');
var first\u name=document.getElementById('first\u name')。值;
如果(名字长度<2){
err_msg.innerHTML='名字不能包含少于2个字符';
返回false;
}否则{
err_msg.innerHTML='';
}
如果(名字长度>20)
{
err_msg.innerHTML='名字不能包含超过20个字符';
err_msg.style.color='red';
}
}

您的函数未包装在脚本中tags@AaronFowler你错过了下面的一句话,js包含在一个外部js文件中,提交时没有检查任何内容。似乎在检查输入字段的键控?现在我真的很困惑。我复制了那段代码,但仍然不起作用,它可以在js fiddlenevermind上工作,现在非常感谢munch,我只是错过了else语句。