HTML-форма не отправляется после успешной проверки AJAX - PullRequest
0 голосов
/ 12 августа 2011

У меня есть простая форма HTML, которая использует ajax в части проверки.ajax работает правильно и правильно отображает ошибки, но если все проверки пройдены, форма не отправляется.В принципе ничего не происходит.Ничего не происходит в Firebug, ничего не происходит на самой странице и т. Д. Это Javascript, который вызывается для проверки формы:

var pass_form = $('#pass_form');
pass_form.submit( valid_pass_sett );

function valid_pass_sett() {
    $('.caption_error').remove();
    $('input').removeClass('error');
    pass_old = $('input[name=pass_old]').val();
    pass_new = $('input[name=pass_new]').val();
    pass_confirm_new = $('input[name=pass_confirm_new]').val();

    if (pass_old === "") {
        //display error on form - snipped
        return false;
    } else if (pass_new === "") {
        //display error on form - snipped
        return false;
    } else if (pass_new != pass_confirm_new) {
        //display error on form - snipped
        return false;
    } else if (pass_new.length < 8) {
        //display error on form - snipped
        return false;
    } else {

        $.post("http://www.example.com/ajax/validate.php",{ // async validation
            type: 'valid_old_change_pass', 
            pass_old: pass_old,
            pass_new: pass_new
        }, valid_pass_combo_callback);

    }
    return false;  // cancel form submission
}

function valid_pass_combo_callback( data ) {
    if (data == 'valid') {
        //only if the form is valid!
        pass_form[0].unbind('submit').submit();
        //pass_form[0].submit();
    } else if (data == "invalid_old") {
        //display error on form - snipped
    }
    else if (data == "invalid_new") {
        //display error on form - snipped
    }
    else {
        //display error on form - snipped
    }
}

и вот основной HTML-код для формы:

<form id="pass_form" class="standard" method="post" action="http://www.example.com/preferences" onsubmit="return valid_pass_sett()">
    <fieldset>
        <div>
            <label for="pass_old">Old password:</label>

            <input type="password" id="pass_old" name="pass_old" />
        </div>
                <div>
            <label for="pass_new">New password:</label>
            <input type="password" id="pass_new" name="pass_new" />
        </div>
        <div>
            <label for="pass_confirm_new">Confirm new password:</label>
            <input type="password" id="pass_confirm_new" name="pass_confirm_new" />
        </div>
                <div>
            <label></label>
            <input type="submit" id="pass_submit" name="pass_submit" value="Change password"/>

            <input type="reset" id="pass_reset" name="pass_reset" value="Cancel"/>
        </div>
    </fieldset>
</form>

Сценарий проходит до строки pass_form[0].unbind('submit').submit();, но затем форма не отправляется.Любая помощь здесь?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Я решил отказаться от привязки этой функции к отправке, и вместо этого привязался к событию onclick для кнопки в форме (которую я использую вместо кнопки отправки), и это решило проблему. Проверка вызывается, когда нажимается кнопка, и если проверка на стороне клиента проходит, то форма отправляется на сервер для проверки там.

0 голосов
/ 12 августа 2011

Измените нижеприведенную строку в методе обратного вызова valid_pass_combo_callback

//Replace this line

   pass_form[0].unbind('submit').submit();

//By this

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