1

我不是很精通javascript,所以请多多包涵。

我有一个表单,我在其中使用 javascript 验证控件。当字段通过 div 为空时会显示错误,但是当我在文本框中聚焦并键入内容时,div 应该消失。但错误 div 没有,即使我输入了有效的内容,它仍然显示 div。

我想知道这个脚本哪里出错了:

<script type="text/javascript">
var err = document.getElementById("errmsg");

function checkInput(inPut) {

    if (inPut.getValue() == "") {
            err.setStyle('display', 'block');
            err.setTextValue("Field cannot be empty!");
            inPut.focus();
            return false;
    }
    else {
            return true;
    }

}


function checkTextBox(textBox)
{

    if (textBox.getValue() == "") {
          err.setStyle('display', 'block');
          err.setTextValue("Field cannot be empty!");
          textBox.focus();
         return false;
    }     
    else if (!checkValidity(textBox.getValue())) {
                 err.setStyle('display', 'block');
         err.setTextValue("Please enter a valid email address!");
         textBox.focus();
         return false;
    }
    else {
         return true;
    }
}

. . . 
<div id="errmsg" class="invalid" style="display:none;"></div> <br />

. . . 
<input type="text" tabindex="1" name="name" id="name" class="input_contact" onblur="checkInput(this);"/>  <br />

. . . 
<input type="text" tabindex="2" name="email" id="email" class="input_contact" onblur="checkTextBox(this);"/>  <br />

它是 facebook 应用程序中的一种形式,但是当 fbjs 工作时,我认为我的基本 javascript 存在问题。

4

2 回答 2

3

试试这个

var err = document.getElementById("errmsg");

function checkInput(inPut) {

    if (inPut.getValue() == "") {
            err.setStyle('display', 'block');
            err.setTextValue("Field cannot be empty!");
            inPut.focus();
            return false;
    }
    else {
            err.setStyle('display', 'none');
            err.setTextValue("");
            return true;
    }

}


function checkTextBox(textBox)
{

    if (textBox.getValue() == "") {
          err.setStyle('display', 'block');
          err.setTextValue("Field cannot be empty!");
          textBox.focus();
         return false;
    }     
    else if (!checkValidity(textBox.getValue())) {
         err.setStyle('display', 'block');
         err.setTextValue("Please enter a valid email address!");
         textBox.focus();
         return false;
    }
    else {
         err.setStyle('display', 'none');
         err.setTextValue("");
         return true;
    }
}
于 2010-05-07T17:37:29.537 回答
1

要让 div 在您第一次键入内容时消失,而不是在检查字段时消失,您还需要onchange和/或onfocus字段的事件处理程序:

<input type="text" tabindex="1" name="name" id="name" class="input_contact"
    onblur="checkInput(this);"
    onfocus="err.setStyle('display', 'none');"
    onchange="err.setStyle('display', 'none');"
/>

checkInput()如果您愿意,它们也可以设置在内部。

于 2010-05-07T19:28:03.003 回答