Почему моя форма не проверяется правильно? - PullRequest
0 голосов
/ 03 октября 2010

Я пытаюсь проверить форму, но не работает: \, когда я отправляю форму, она переходит в mail.php, даже если необходимые поля отсутствуют, но я установил onsubmit на validate(), чтобы должен проверить, но не работает. В чем проблема с моим кодом? Я не могу найти это.

HTML:

<form action="mail.php" onsubmit="return validate()" method="post" class="contact-form" id="contactForm">

    <div id="errors"></div>

    <label for="author">Name:</label><br/><br/>

    <input type="text" name="author" id="message" /><br/><br/>

    <label for="author">Message:</label><br/><br/>

    <textarea name="message" id="message"></textarea><br/><br/>

    <input type="submit" class="button" value="Send Message"/>

</form>

Javascript:

    <script type="text/javascript">
    function error(message){
        return "<p class=\"error\">"+message+"</p>";
    }

    function validate(){
        var form     = document.getElementById("contactForm");
        var author     = document.getElementById("author");
        var message = document.getElementById("messsage");
        var errors    = document.getElementById("errors");
        alert(author.value);
        if(message.value == '' || author.value == ''){
            errors.innerHTML = error("Please fill in all fields.");
            return false;
        } else {
            return true;
        }

    }
</script>

Ответы [ 4 ]

3 голосов
/ 03 октября 2010

У вас есть два элемента с идентификатором message и ни одного с author.

Валидатор разметки подобрал бы это для вас.

3 голосов
/ 03 октября 2010

id = author для вашего первого элемента ввода.

Также проверьте jQuery, это сэкономит ваше время в долгосрочной перспективе

2 голосов
/ 03 октября 2010
var message = document.getElementById("messsage");

сообщение имеет дополнительные "s".

<input type="text" name="author" id="message" />

Вам необходимо изменить "message" на "author"

1 голос
/ 03 октября 2010

Это неправильно:

<input type="text" name="author" id="message" />

Необходимо установить name и id на одинаковые значения (вы используете id="message" для следующего поля, поэтому есть конфликт.

Также оба ваших тега label имеют for="author"; второй не так.

Полагаю, ваша проблема здесь в том, что слишком много копий + вставок. ;)

...