it-swarm.com.ru

проверка формы jQuery перед отправкой Ajax

Немного JavaScript:

$(document).ready(function()
    {
            $('#form').submit(function(e)
            {     

                e.preventDefault();
                var $form = $(this);

                // check if the input is valid
                if(! $form.valid()) return false;
                    $.ajax(
                    {
                    type:'POST',
                    url:'add.php',
                    data:$('#form').serialize(),
                    success:function(response)
                    {
                        $("#answers").html(response);
                    }
                });     

            })
    });

HTML-бит:

    <input type="text" name="answer[1]" class="required" />
    <input type="text" name="answer[2]" class="required" />

Так что это код, который я пытаюсь использовать. Идея состоит в том, чтобы проверить все мои входные данные перед отправкой формы с помощью Ajax. Я попробовал множество версий этого сейчас, но каждый раз, когда я заканчиваю с отправкой, хотя форма не полностью заполнена. Все мои данные относятся к «обязательному» классу. Кто-нибудь может увидеть, что я делаю не так?

Кроме того, я зависим от требований на основе классов, так как мои входные имена генерируются с помощью php, поэтому я никогда не могу быть уверен, какое имя [id] или типы ввода я получу.

Я показываю/скрываю вопросы по мере прохождения через «страницы».

<input type="button" id="next" onClick="toggleVisibility('form3')" class="next-btn"/>

JS:

function toggleVisibility(newSection) 
        {
            $(".section").not("#" + newSection).hide();
            $("#" + newSection).show();
        } 
36
Tom

Вы можете использовать параметр submitHandler . По сути, поместите вызов $.ajax внутри этого обработчика, то есть инвертируйте его с помощью логики настройки валидации.

$('#form').validate({

    ... your validation rules come here,

    submitHandler: function(form) {
        $.ajax({
            url: form.action,
            type: form.method,
            data: $(form).serialize(),
            success: function(response) {
                $('#answers').html(response);
            }            
        });
    }
});

Плагин jQuery.validate вызовет обработчик отправки, если проверка прошла успешно.

81
Darin Dimitrov

во-первых, вам не нужно явно добавлять classRules, так как плагин jquery.validate автоматически определяет required, поэтому вы можете использовать этот код:

  1. при отправке формы вы предотвращаете поведение по умолчанию 
  2. если форма недействительна, остановить выполнение.
  3. в противном случае отправьте запрос ajax.

    $('#form').submit(    function(e){     
    
                e.preventDefault();
                var $form = $(this);
    
              // check if the input is valid
                if(! $form.valid()) return false;
    
               $.ajax({
                    type: 'POST',
                    url: 'add.php',
                    data: $('#form').serialize(),
                    success: function(response) {
                        $("#answers").html(response);
                    }
    
                });
            });
    
12
amd

Вы можете попробовать сделать:

if($("#form").validate()) {
 return true;
} else {
 return false;
}
6

Этот конкретный пример будет просто проверять входные данные, но вы можете настроить его, однако, добавив что-то вроде этого в вашу функцию .ajax:

beforeSend: function() {                    
    $empty = $('form#yourForm').find("input").filter(function() {
        return this.value === "";
    });
    if($empty.length) {
        alert('You must fill out all fields in order to submit a change');
        return false;
    }else{
        return true;
    };
},
5
Erik Grosskurth

Я думаю, что submitHandler с проверкой JQuery является хорошим решением. Пожалуйста, получите идею из этого кода. Вдохновленный от @ Darin Dimitrov

$('.calculate').validate({

                submitHandler: function(form) {
                    $.ajax({
                        url: 'response.php',
                        type: 'POST',
                        data: $(form).serialize(),
                        success: function(response) {
                            $('#'+form.id+' .ht-response-data').html(response);
                        }            
                    });
                }
            });
3
shahzad jam
> Required JS for jquery form validation
> ## jquery-1.7.1.min.js ##
> ## jquery.validate.min.js ##
> ## jquery.form.js ##

$("form#data").validate({
    rules: {
        first: {
                required: true,
            },
        middle: {
            required: true,
        },          
        image: {
            required: true,
        },
    },
    messages: {
        first: {
                required: "Please enter first",
            },
        middle: {
            required: "Please enter middle",
        },          
        image: {
            required: "Please Select logo",
        },
    },
    submitHandler: function(form) {
        var formData = new FormData($("#image")[0]);
        $(form).ajaxSubmit({
            url:"action.php",
            type:"post",
            success: function(data,status){
              alert(data);
            }
        });
    }
});
3
user3655384

Я думаю, что сначала я проверяю форму и, если проверка пройдет успешно, я бы сделал пост в Ajax. Не забудьте добавить «return false» в конце скрипта.

3
Mantas Vaitkūnas
function validateForm()
{
    var a=document.forms["Form"]["firstname"].value;
    var b=document.forms["Form"]["midname"].value;
    var c=document.forms["Form"]["lastname"].value;
    var d=document.forms["Form"]["tribe"].value;
    if (a==null || a=="",b==null || b=="",c==null || c=="",d==null || d=="")
    {
        alert("Please Fill All Required Field");
        return false;
    }
    else{

        $.ajax({
        type: 'post',
        url: 'add.php',
        data: $('form').serialize(),
        success: function () {
          alert('Patient added');
          document.getElementById("form").reset();
        }
      });

    }
}

  $(function () {

    $('form').on('submit', function (e) {
      e.preventDefault();

      validateForm();


    });
  });
1
luis

Встроенной функции JavaScript checkValidity более чем достаточно для запуска проверки HTML5

$(document).ready(function() {
    $('#urlSubmit').click(function() {
        if($('#urlForm')[0].checkValidity()) {
            alert("form submitting");
        }
    });
});
0
jforjs