weixin_33701564 2017-02-02 16:17 采纳率: 0%
浏览 19

Ajax不止一次发送表单

Why my form is getting submited not just once? Sometimes, it send it about 2-3-4-5 times, and i get 2-3-4-5 email, that a new message is sended from the site.

Why doesnt the button disabled works here? What sould i do?

$("#AjanlatKeresBtn").click(function() // This opens the modal only
{
    $('#AjanlatResult').hide();
    $("#AjanlatModal").modal("show");
    $('#AjanlatForm').on('submit', function(e)
    {
        $('#kerdesButton').prop('disabled', true);
        e.preventDefault();
        var FormErros = [];
        var AjanlatNev = $('#AjanlatNev').val();
        var AjanlatEmail = $('#AjanlatEmail').val();
        var AjanlatTel = $('#AjanlatTel').val();
        var AjanlatCim = $('#AjanlatCim').val();
        var AjanlatMennyiseg = $('#AjanlatMennyiseg').val();
        var AjanlatUzenet = $('#AjanlatUzenet').val();
        var AjanlatTermekID = $('#AjanlatTermekID').val();
        if($.trim(AjanlatNev) == "") { FormErros.push("Nem adta meg a nevét."); }
        if($.trim(AjanlatEmail) == "") { FormErros.push("Nem adta meg az e-mail címét."); }
        if(AjanlatEmail != ""){if(validate_Email(AjanlatEmail) == false){FormErros.push("Elképzelhető, hogy hibásan adta meg az e-mail címét.");}}
        if($.trim(AjanlatTel) == "") { FormErros.push("Nem adta meg a telefonszámát."); }
        if($.trim(AjanlatUzenet) == "") { FormErros.push("Nem írt semmilyen kérdést vagy üzenetet."); }
        if($.trim(AjanlatTermekID) == "") { FormErros.push("Hiányzik a termék ID."); }
        if(AjanlatTermekID != ""){if(!$.isNumeric(AjanlatTermekID)){FormErros.push("A termék ID nem szám típusú.");}}
        if($.trim(AjanlatCim) == "") { FormErros.push("Nem adta meg a szállítási címet."); }
        if($.trim(AjanlatMennyiseg) == "") { FormErros.push("Nem adta meg a termék(ek) mennyiségét."); }
        if(FormErros.length == 0 )
        {
            $.ajax({
                type: 'POST',
                cache: false,
                data: $('#AjanlatForm').serialize(),
                url: 'files/uj-ajanlatkeres.php',
                success: function(data)
                {
                    $('#kerdesButton').hide();
                    $('#AjanlatForm')[0].reset();
                    location.href = "<?php echo $host; ?>/uzenet/uj-ajanlatkeres";
                }
            });
        }
        else
        {
            $('#kerdesButton').prop('disabled', false);
            $('#AjanlatResult').fadeIn( "slow" ).html('<div class="javascript_rror_div">'+(FormErros.join('<br/>'))+'</div>');
        }
    });
    e.stopPropagation();
});
  • 写回答

2条回答 默认 最新

  • weixin_33722405 2017-02-02 16:35
    关注

    Move submit handler out of the click event handler, that is how click handler for modal should looks like, and i refactored your submit handler for you:

    $("#AjanlatKeresBtn").click(function(){
      $('#AjanlatResult').hide();
      $("#AjanlatModal").modal("show");
      e.stopPropagation();
    });
    
    
    $('#AjanlatForm').on('submit', function(e)
    {
        $('#kerdesButton').prop('disabled', true);
        e.preventDefault();
        var field, 
            FormErros = [],
            fields = { Nev: "Nem adta meg a nevét.", 
                       Tel: "Nem adta meg a telefonszámát.",
                       Uzenet: "Nem írt semmilyen kérdést vagy üzenetet.", 
                       TermekID: "Hiányzik a termék ID.",
                       Cim: "Nem adta meg a szállítási címet.", 
                       Mennyiseg: "Nem adta meg a termék(ek) mennyiségét.",
                       Email: "Nem adta meg az e-mail címét."
                     };
        Object.keys(fields).forEach(function(key){
            field = $("#Ajanlat"+key).val();
            if($.trim(field) == "") { FormErros.push(field[key]); }
            else{
                if(key == 'Email' && !validate_Email(field)){FormErros.push("Elképzelhető, hogy hibásan adta meg az e-mail címét.");}
                if(key == 'TermekID' && !$.isNumeric(field)){FormErros.push("A termék ID nem szám típusú.");}
            }
        });
        if(FormErros.length == 0 )
        {
            $.ajax({
                type: 'POST',
                cache: false,
                data: $('#AjanlatForm').serialize(),
                url: 'files/uj-ajanlatkeres.php',
                success: function(data)
                {
                    $('#kerdesButton').hide();
                    $('#AjanlatForm')[0].reset();
                    location.href = "<?php echo $host; ?>/uzenet/uj-ajanlatkeres";
                }
            });
        }
        else
        {
            $('#kerdesButton').prop('disabled', false);
            $('#AjanlatResult').fadeIn( "slow" ).html('<div class="javascript_rror_div">'+(FormErros.join('<br/>'))+'</div>');
        }
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。