0

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

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

4

5 回答 5

0

当 keyup 事件以形式触发时,您正在调用该函数。因此,当用户在输入单个字符后开始输入他/她的名字时,这将显示错误消息。

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

于 2012-11-01T13:49:30.140 回答
0

您忘记执行 document.getElementById。Firebug 给出了错误

于 2012-11-01T13:49:57.733 回答
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
于 2012-11-01T13:51:23.817 回答
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';
    }
}
于 2012-11-01T13:52:03.807 回答
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';
        }
    }
于 2012-11-01T13:52:05.267 回答