当我尝试使用更改时无法从Submit函数调用

时间:2018-07-05 04:37:45

标签: javascript jquery ajax form-submit

单击功能正常运行,但是当我使用更改功能时,它没有达到提交功能

示例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 :(得分:0)

我想转介您另一个答案-Detecting input change in jQuery?

问题出在未在输入字段上触发的“ change”事件,您应该正在监听其他事件,例如“ input”,“ keydown”,“ keypress”或“ change”事件您正在收听的音乐应该使用其他表单元素,例如select(下拉框)

答案 1 :(得分:0)

尝试一下。

$(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 }); 

答案 2 :(得分:0)

通过编写

$(this).parents('form').submit(function(event) {});
函数,您正在做的是将事件绑定到表单。您需要做的是也触发表单提交。对于您的代码,我建议您在编写的绑定函数结束之后也添加一个
$(this).parents("form").submit();