Проверка формы игнорируется, когда она отправляется с помощью ajax

У меня есть эта функция javascript на моей странице.

$(document).ready(function(){
    $('input[type="radio"]').click(function(){
        if($(this).attr("value")=="InfiStallStock"){
            $(".e-stock-saldo-box").hide();
            $(".InfiStall ul li .infistallLocation").attr('required');              
            $(".Delivery ul input:radio").removeAttr('required');
            $(".Delivery ul input:text").removeAttr('required');
            $(".InfiStall").show();
        }
        if($(this).attr("value")=="DeliveryStock"){
            $(".e-stock-saldo-box").hide();
            $(".InfiStall ul li .infistallLocation").removeAttr('required');
            $(".Delivery ul li input:radio").attr('required');
            $(".Delivery ul input:text").attr('required');
            $(".Delivery").show();
        }
    });
});  


            function enableList(element) {
                var select = document.getElementById("select"+element.id.substring(element.id.length-9));
                enableSubmit();
                showUp();                    
                if(element.checked === true){
                    select.disabled = false;
                    checkSelect(select);
                }else{
                    select.disabled = true;
                    select.selectedIndex = 0;
                }
            }
            function checkSelect(element){
                if(!validate_select(element)){
                    element.setCustomValidity("Pilih Jumlah Estock");
                }else{
                    element.setCustomValidity("");
                }
            }

Этот javascript функционировал, чтобы проверить, какой вариант выбрать пользователем. Если пользователь выбирает один вариант, тогда другая опция, которая требует ввода, будет проигнорирована/удалена и наоборот.

javascript отлично работает в проверке формы, если я отправлю форму непосредственно с помощью действия формы, например <form action="submit.php"/>.

Однако, когда я изменяю способ отправки, который теперь с ajax, проверка игнорируется.

Вот ajax script, чтобы отправить форму:

$('#btn_submit').on('click', function(e) {
    e.preventDefault();

    var esquantity = $('.row_selected select').map(function() { return $(this).val(); }).get().join('|');
    var size = $('.row_selected td.size span').map(function() { return $(this).text(); }).get().join('|');

    $.ajax(
    {
        type: "POST",
        url: "../ajax.php",
        data: 'esquantity='+esquantity+ '&size='+ size,
        cache: false,
        success:function(html)
        {
            alert("Succes " + html);
        }
    });

Может ли кто-нибудь помочь мне решить эту проблему, так что эта форма будет иметь некоторые проверки, даже если я отправлю ее с помощью ajax. Благодарю!

Ответ 1

Попробуйте -

Написание этого ниже события на обычной кнопке, а не на кнопке отправки

$('#btn_submit').on('click', function(e) {

Для этого вам потребуется не звонить

e.preventDefault();

в функции, и тогда вы можете явно вызвать функцию submit() в области обратного вызова ajax. i.e.

success:function(html)
{
    // call submit function explicitly it should validate all your constraints then
}