проверка в javascript - удалить сообщение об ошибке в фокусе - PullRequest
1 голос
/ 07 мая 2010

Я не очень хорошо разбираюсь в 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.

Ответы [ 2 ]

3 голосов
/ 07 мая 2010

попробуйте

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;
    }
}
1 голос
/ 07 мая 2010

Чтобы 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(), если хотите.

...