Статьи

jQuery Ajax Form: асинхронная форма отправки

 

jQuery Ajax Form предоставляет возможность отправлять форму асинхронно. Этот плагин действительно полезен для асинхронной загрузки файлов. Однако в этом посте я показываю только обычное поле submit. Вы можете найти больше информации о плагине
здесь .

В этой демонстрации
«Мы создадим форму и стилизуем их в начальной загрузке и инициализируем их с помощью плагина формы Jquery Ajax». Структура каталогов для этой демонстрации показана ниже:  
В этой демонстрации мы отправляем поле формы на ту же страницу (только для демонстрационных целей). Вы можете использовать свойство URL
в форме Ajax или предоставить URL в атрибуте ACTION в элементе DOM формы.

Мы создали элемент формы с 3 полями ввода (имя, тема, ролл) и кнопкой отправки. HTML-разметка используется ниже:

<!DOCTYPE html>
<html>
<head>
    <title>Jquery AjaxForm With Bootstrap Style</title>
    <link rel="stylesheet" href="./css/bootstrap.min.css">
    <link rel="stylesheet" href="./css/my-style.css">
</head>
<body>
    <form id="my-detail-form">
        <div class="panel panel-success">
            <div class="panel-heading">
                <h3 class="panel-title">Ajax Form With Bootstrap</h3>
            </div>
            <div class="panel-body">
               <div class="alert alert-warning  my-message-error">
                   <a href="#" class="alert-link">...</a>
               </div>
                <div class="alert alert-success  my-message-success">
                    <a href="#" class="alert-link">...</a>
                </div>
               <input name='name' type="text" class='form-control' placeholder="Enter Your Name">
               <input name='subject' type="text" class='form-control' placeholder="Enter Your Subject">
               <input name='roll' type="text" class='form-control' placeholder="Enter Your Roll Number">
            </div>
            <div class="panel-footer">
                <button type="submit" class="btn btn-info">SUBMIT</button>
            </div>
        </div>
    </form>
    <script src="lib/jquery-1.10.1.min.js"></script>
    <script src="lib/jquery.form.min.js"></script>
    <script src="my-form-script.js"></script>
</body>
</html>

Приведенный ниже скрипт показывает инициализацию элемента Form с помощью формы Ajax. Он имеет обработчик beforeSubmit, который выполняет проверку обязательного поля. Если обязательное поле отсутствует, оно отображает сообщение об ошибке в верхней части. Он имеет обработчик успеха, чтобы указать, была ли форма отправлена ​​успешно и получен ли ответ.

/**
 * Created by saan on 10/6/13.
 */
var TS_AJAX_FORM ={
 
    /*ERROR Message Display Element Reference*/
    MY_MESSAGE_ERR : $(".my-message-error"),
 
    /*SUCCESS Message Display Element Reference*/
    MY_MESSAGE_SUC : $(".my-message-success"),
 
    /*Shows the input message and hides it in 5 seconds*/
    showMessage:function(msg, type){
 
        var message = (type === 'ERR')? this.MY_MESSAGE_ERR : this.MY_MESSAGE_SUC,
 
            txt = $(message).find('a');
 
        $(txt).html(msg);
 
        message.fadeIn('fast',function(){
 
            message.fadeOut(5000);
        })
    },
    /*
     *Handler: success, Once the form is submitted and response
     *arrives, it will be activated.
     */
    successHandler: function(responseText, statusText, xhr, form){
 
        TS_AJAX_FORM.showMessage("Form Submitted Status("+statusText+").", "SUC");
    },
    /*
     *responseText, statusText, xhr, $form: beforeSubmit, for validation   Let, title and roll is your required field.
     *Let's show an error message if these fields are blank.
     */
    beforeSubmitHandler:function(arr, form, options){
 
        var isValid = true;
 
        $.each(arr,function(index, aField){
 
            if('name' === aField.name && aField.value === ""){
 
                TS_AJAX_FORM.showMessage("Name Can not be Empty.", "ERR");
 
                isValid = false;
 
            }else if('roll' === aField.name && aField.value === ""){
 
                TS_AJAX_FORM.showMessage("Roll Can not be Empty.", "ERR");
 
                isValid = false;
            }
        });
        return isValid;
    },
    /*Initializing Ajax Form*/
    initMyAjaxForm:function(){
 
        $("#my-detail-form").ajaxForm({
 
            beforeSubmit:this.beforeSubmitHandler,
 
            success:this.successHandler,
 
            clearForm:true
        });
    }
};
/*My Small Tutorial: Execution point*/
$(document).ready(function(){
    TS_AJAX_FORM.initMyAjaxForm()
});

Начальная
форма будет выглядеть так при загрузке страницы:

На приведенном ниже снимке экрана показано сообщение об ошибке, когда мы отправили поле, не входя в поле ввода рулона. Это делается с помощью обработчика beforeSubmit и возвращает false, когда roll или name пусто:

На экране ниже показано сообщение об успешном завершении, когда форма отправлена ​​и ответ получен. Если для ‘clearForm’ или ‘resetForm’ установлено значение true, то после успешной отправки все поля формы будут очищены.