Невозможно вызвать функцию отправки, когда я пытаюсь использовать изменения - PullRequest
0 голосов
/ 05 июля 2018

Функциональность при нажатии работает нормально, но когда я использую функцию изменения, она не срабатывает при отправке

Пример 1:

$('button').click(function(e) {
    $('form').submit(function(event) {
        event.preventDefault(); //prevent default action
        var post_url = $(this).attr("action"); //get form action url
        var request_method = $(this).attr("method"); //get form GET/POST method
        var form_data = new FormData(this); //Encode form elements for submission
        $.ajax({
            url : post_url,
            type: request_method,
            data : form_data,
            contentType: false,
            processData:false,
        }).done(function(response) { //
            //pass
        }).fail(function(response) {
            //fail
        });
    });
}); 

Пример 2:

$('input').change(function(event) {
    $(this).parents('form').submit(function(event) {
        event.preventDefault(); //prevent default action
        var post_url = $(this).attr("action"); //get form action url
        var request_method = $(this).attr("method"); //get form GET/POST method
        var form_data = new FormData(this); //Encode form elements for submission
        $.ajax({
            url : post_url,
            type: request_method,
            data : form_data,
            contentType: false,
            processData:false,
        }).done(function(response) { 
            //pass
        }).fail(function(response) {
            //fail
        });
    });
});

Может кто-нибудь, пожалуйста, помогите мне Почему Пример 2 не работает, как я хотел. Если вы видите, что оба кода одинаковы, но измените только имя события.

я делаю ошибку или ее поведение по умолчанию в Jquery?

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Попробуйте это ..

$(this).parent('form').submit();
$('form').on('submit', function(event) { //dostuff });

Что касается события change, попробуйте использовать .on()

$('input').on('change', function(event) { //dostuff });

ПРИМЕЧАНИЕ. Использование change вызовет событие, только когда элемент потеряет фокус. Если вы хотите, чтобы событие срабатывало, когда пользователь нажимает клавишу, что-то удаляет, вставляет и т. Д., Вы хотите использовать input

$('input').on('input', function(event) { //dostuff }); 
0 голосов
/ 05 июля 2018

При написании

$(this).parents('form').submit(function(event) {});
функция, которую вы делаете, привязывает событие к форме. Что вам нужно сделать, это вызвать отправку для формы тоже. С вашим кодом я предлагаю вам добавить
$(this).parents("form").submit();
также после написанной вами функции конца связывания.
0 голосов
/ 05 июля 2018

Я хотел бы отослать вас к другому ответу - Обнаружение изменения входа в jQuery?

Проблема в событии 'change', которое не срабатывает в поле ввода. Вы должны либо слушать другие события, такие как 'input', 'keydown', 'keypress' или событие 'change' вы слушаете должны быть на другой элемент формы, например, выберите (раскрывающийся список)

...