Как отключить отправку формы, если имя пользователя недоступно - PullRequest
0 голосов
/ 19 мая 2010

Я проверил наличие имени пользователя. Проблема в том, что даже если имя пользователя недоступно, форма отправляется.

Отредактированный код:

<SCRIPT type="text/javascript">
$(document).ready(function(){

$("#emailch").change(function() { 

    var usr = $("#emailch").val();
    if(usr.length >= 3)
    {
        $("#status").html('<img src="images/loader.gif" align="absmiddle">&nbsp;Checking availability...');
        $.ajax({  
            type: "POST",  
            url: "includes/check.php",  
            data: "username="+ usr,  
            success: function(msg){   
                $("#status").ajaxComplete(function(event, request, settings){ 
                    if(msg == 'OK')
                    { 
                        $("#username").removeClass('object_error'); // if necessary
                        $("#username").addClass("object_ok");
                        $(this).html('&nbsp;<img src="images/tick.gif" align="absmiddle">');

                    }
                    else
                    {
                        $("#username").removeClass('object_ok'); // if necessary
                        $("#username").addClass("object_error");
                        $(this).html(msg);


                    }

                });

            }
        }); 
    }

    else
    {
        $("#status").html('<font color="red">The username should have at least <strong>3</strong> characters.</font>');
        $("#username").removeClass('object_ok'); // if necessary
        $("#username").addClass("object_error");
    }

});

});
</SCRIPT>

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

Ответы [ 3 ]

1 голос
/ 20 мая 2010

при отправке возвращает false независимо от того, что, если поле хорошее, отправьте ajax формы, если оно плохое, произошла ошибка или все, что вам нужно

<form action="http://www.google.com" id="formId" method="post">
<input type="text" id="emailch" name="emailch" />
<input type="submit" />
</form>


<script type="text/javascript">

$(document).ready(function(){

    $("#formId").submit( function() { 

        if( $("#emailch").val().length >= 3){
            alert( 'the form is going to post via ajax here' );
        }else{
            alert( 'user name invalid error out or whatever you need to do.' );
        }
        return false;
    });
});
</script>
1 голос
/ 20 мая 2010

Использование возврата false, чтобы остановить отправку формы, не очень хорошо работает в jQuery. Вместо этого используйте event.preventDefault (), попробуйте что-то вроде этого:

$(function() {
    $('#formid').submit(function(event) {
        if ($("#emailch").val().length < 3) {
            event.preventDefault();
        }
    });
});
0 голосов
/ 19 мая 2010

Установите флаг (переменную) в вашей функции success на false (например), если имя пользователя недоступно. Затем проверьте этот флаг в обработчике onsubmit вашей формы, и, если флаг равен false, верните false из этого обработчика событий, и ваша форма не будет отправлена.

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