onsubmit() форма в мобилен браузър

В момента използвам функция на javascript в събитието onsubmit() на моя формуляр, за да проверя дали всички въведени данни не са празни.

Това работи добре на компютър, но на мобилен телефон променя цвета на фона (както искам да направя, когато входът е празен), но въпреки това изпраща формуляра !!!

Моята форма:

<form id="formContact" action="envoi-message.php" method="post" class="normal" onsubmit="return valideChamps();">
            <div class="ddl">
                <span>VOUS ÊTES...</span>
                <div class="ddlOption">
                    <ul>
                        <li onclick="ddlContact('entreprise')"><span>UNE ENTREPRISE</span></li>
                        <li onclick="ddlContact('ecole')"><span>UNE &Eacute;COLE</span></li>
                        <li onclick="ddlContact('personne')"><span>UNE PERSONNE</span></li>
                    </ul>
                </div>
            </div>
            <input class="cache" type="text" name="entreprise" placeholder="NOM DE L'ENTREPRISE" />
            <input class="cache" type="text" name="ecole" placeholder="NOM DE L'&Eacute;COLE" />
            <input type="text" name="nom" placeholder="VOTRE NOM" />
            <input type="email" name="email" placeholder="VOTRE EMAIL" />
            <textarea name="message" placeholder="VOTRE MESSAGE" ></textarea>
            <input id="btnEnvoi" type="submit" value="Envoyer">
        </form>

Моята функция:

    function valideChamps(){
    var bResult = true;
    if ($("input[name*='nom']").val() == "") {
        $("input[name*='nom']").addClass("error");
        bResult = false;
    } else {
        $("input[name*='nom']").removeClass("error");
    }
    if ($("input[name*='email']").val() == "") {
        $("input[name*='email']").addClass("error");
        bResult = false;
    } else {
        var regex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        if (regex.test($("input[name*='email']").val()) == false ) {
            $("input[name*='email']").addClass("error");
            bResult = false;
        } else {
            $("input[name*='email']").removeClass("error");
        }
    }                                      
    if ($("#formContact textarea").val() == ""){
        $("#formContact textarea").addClass("error");
        bResult = false;
    }else {
        $("#formContact textarea").removeClass("error");
    }
    if ($("div.ddl > span").text().contains("entreprise")){
        if ($("input[name*='entreprise']").val() == "") {
            $("input[name*='entreprise']").addClass("error");
            bResult = false;
        }else {
            $("input[name*='entreprise']").removeClass("error");
        }
    } else if ($("div.ddl > span").text().contains("école")){
        if ($("input[name*='ecole']").val() == "") {
            $("input[name*='ecole']").addClass("error");
            bResult = false;
        }else {
            $("input[name*='ecole']").removeClass("error");
        }
    }
    return bResult;
}

Имате ли представа какво не е наред...? Най-добри пожелания Одри

РЕДАКТИРАНЕ: промених бутона си за изпращане; Сложих a с onclick, което изпраща формуляра, ако bResut == true


person Audrey    schedule 03.03.2015    source източник
comment
Определете мобилен телефон. Кои браузъри сте тествали? Всички ли показват това поведение? Проверихте ли дали bResult съдържа стойността, която очаквате?   -  person Quentin    schedule 03.03.2015


Отговори (2)


Опитайте да регистрирате вашия манипулатор на изпращане във формуляра, като използвате JS, така че да можете да получите достъп до събитието и да извикате preventDefault() вместо (или в допълнение към) връщане на false; Така:

document.getElementById('formContact').onsubmit = function(e) {
  //your validateChamps stuff goes here
if(!bResult) e.preventDefault();
};
person qbcat    schedule 03.03.2015
comment
Благодаря за отговора, но дори и да работи на компютър, винаги е същият проблем на мобилен... :( - person Audrey; 03.03.2015

РЕДАКТИРАНЕ: промених бутона си за изпращане; Сложих a с onclick, което изпраща формуляра, ако bResut == true

person Audrey    schedule 04.03.2015