Почему моя форма все еще отправляется, когда моя функция javascript возвращает false? - PullRequest
1 голос
/ 20 марта 2012

Вот моя функция проверки формы Javascript:

function companyName() {
    var companyName = document.forms["SRinfo"]["companyName"].value;
    if (companyName == ""){
    return false;
    } else {
    return true;
    }
}

function companyAdd() {
    var companyAdd1 = document.forms["SRinfo"]["companyAdd1"].value;
    if (companyAdd1 == ""){
    return false;
    } else {
    return true;
    }
}

function companyCity() {
    var companyCity = document.forms["SRinfo"]["companyCity"].value;
    if (companyCity == ""){
    return false;
    } else {
    return true;
    }
}

function companyZip() {
    var companyZip = document.forms["SRinfo"]["companyZip"].value;
    if (companyZip == ""){
    return false;
    } else {
    return true;
    }
}

function enteredByName() {
    var enteredByName = document.forms["SRinfo"]["enteredByName"].value;
    if (enteredByName == ""){
    return false;
    } else {
    return true;
    }
}

function dayPhArea() {
    var dayPhArea = document.forms["SRinfo"]["dayPhArea"].value;
    if (dayPhArea == ""){
    return false;
    }
}

function dayPhPre() {
    var dayPhPre = document.forms["SRinfo"]["dayPhPre"].value;
    if (dayPhPre == ""){
    return false;
    } else {
    return true;
    }
}

function dayPhSub() {
    var dayPhSub = document.forms["SRinfo"]["dayPhSub"].value;
    if (companyAdd1 == ""){
    return false;
    } else {
    return true;
    }
}

function validateForm() {
        if (companyName() && companyAdd() && companyCity() && companyZip() && enteredByName() && dayPhArea() && dayPhPre() && dayPhSub()) {
            return true;        

        } else {
            window.alert("Please make sure that all required fields are completed.");
            document.getElementByID("companyName").className = "reqInvalid";
            companyName.focus();
            return false;
        }
    }

Вот все мои включения, на случай, если одно конфликтует с другим (я использую jquery для их переключения ()):

<script type="text/javascript" src="formvalidator.js"></script>
<script type="text/javascript" src="autoTab.js"></script>
<?php 
require_once('mobile_device_detect.php');
include_once('../db/serviceDBconnector.php');
$mobile = mobile_device_detect();

if ($mobile) {
        header("Location: ../mobile/service/index.php");
    if ($_GET['promo']) {
        header("Location: ../mobile/service/index.php?promo=".$_GET['promo']);
    }
}

?>
<script src="http://code.jquery.com/jquery-1.7.1.js"></script>

Вот мой тег формы с функцией, возвращаемой onSubmit:

<form method="POST" action="index.php" name="SRinfo" onsubmit="return validateForm();">

Проверка работает отлично, я протестировал все поля и продолжаю получать соответствующее предупреждение, однако после предупреждения форма отправляется в mysql и отправляется как электронное письмо. Вот код, куда я отправляю свои данные POST.

if($_SERVER['REQUEST_METHOD']=='POST') {
// Here I submit to Mysql database and email form submission using php mail()

Ответы [ 2 ]

5 голосов
/ 20 марта 2012

Мне кажется, что эта строка, вероятно, взорвется:

companyName.focus();

Единственное определение, которое я вижу для companyName, - это функция.Вы не можете вызвать focus для функции.

Это взрывается, поэтому return false никогда не достигается.

0 голосов
/ 20 марта 2012

Я бы закомментировал весь код в разделе проверки и просто вернул false. Если это останавливает публикацию формы, то в самом коде, выполняющем проверку, возникает ошибка. Добавляйте каждую часть по одной, пока ошибка не будет найдена.

Полагаю, то же самое, что и Джеймс, предполагает, что вы вызываете фокус на функции 'companyName'. Строка выше этого, кажется, пытается получить элемент из документа с тем же именем, но вы не назначаете это переменной, чтобы вы могли вызвать фокус на ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...