javascript表单验证没有做任何事情

时间:2012-11-01 13:41:21

标签: javascript html forms validation

我正在尝试确保输入字段的内容在允许的字符数内,并且如果在输入字段之后没有打印出错误消息。波纹管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';
        }
    }

基本标记

<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>

表单只是提交而没有发生任何事情。我哪里错了?任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你忘了做document.getElementById。 Firebug正在给出错误

答案 2 :(得分:0)

获取错误:

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

答案 3 :(得分:0)

试试这个

 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';
    }
}

答案 4 :(得分:0)

查看以下http://jsfiddle.net/VL7dc/2/

而不是解释你的错误在哪里,你认为你需要尝试理解为什么这样做有效,你的意思不是。

  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';
        }
    }