Javascript上提交事件多次火灾

时间:2018-02-23 12:48:16

标签: javascript jquery ajax click

当这个功能第一次运行时,它没问题,但是如果我第二次运行这个功能,它会自动运行2次,如果我第三次运行这个功能,它会自动运行3倍。 我没有使用迭代循环。 我该如何解决这个问题?

$("#form_personal").submit(function(event){
    event.preventDefault(); //prevent default action 
    var $id_last_messaggistica = $('div[id^="messaggistica"]:last');
    var num = parseInt( $id_last_messaggistica.prop("id").match(/\d+/g), 10 ) +1;
    document.getElementById('idlastmessaggistica').value = num;
    var post_url = $(this).attr("action"); //get form action url
    var form_data = $(this).serialize(); //Encode form elements for submission
    $.post( post_url, form_data, function( response ) {
        $("#server-results").html( response );
    });
    event.stopPropagation? event.stopPropagation() : event.cancelBubble = true;
});

这是点击通话的代码

$("#btn_personalinfo").click(function(event){
        $("#form_personal").submit(function(event){
            event.preventDefault(); //prevent default action 
            var $id_last_messaggistica = $('div[id^="messaggistica"]:last');
            var num = parseInt( $id_last_messaggistica.prop("id").match(/\d+/g), 10 ) +1;
            document.getElementById('idlastmessaggistica').value = num;
            var post_url = $(this).attr("action"); //get form action url
            var form_data = $(this).serialize(); //Encode form elements for submission
            $.post( post_url, form_data, function( response ) {
              $("#server-results").html( response );
            });
        });
    });

这是提交按钮

<button type="submit" class="btn btn-primary col-lg-6 col-sm-6 col-md-6 col-xs-6" id="btn_personalinfo">Salva</button>

这是标签表格

<form name="personal_info" id="form_personal" method="post" action="Curriculum/updateInformazioniPersonali">

1 个答案:

答案 0 :(得分:0)

单击按钮时,您不希望向表单添加提交事件处理程序。它可能会导致提交的内容混乱

您想要的代码就是这个而不是其他内容 - 假设idlastmessaggistica是一个独特的ID

$("#form_personal").on("submit",function(event) {
  event.preventDefault(); //prevent default action 
  var $id_last_messaggistica = $('div[id^="messaggistica"]:last');
  var num = parseInt($id_last_messaggistica.prop("id").match(/\d+/g), 10) + 1;
  $('#idlastmessaggistica').val(num);
  var post_url = $(this).attr("action"); //get form action url
  var form_data = $(this).serialize(); //Encode form elements for submission
  $.post(post_url, form_data, function(response) {
    $("#server-results").html(response);
  });
});