jQuery的preventdefault在表单第二次提交时出错

jQuery preventdefault on form submit goes wrong on second time

本文关键字:提交 出错 第二次 表单 preventdefault jQuery      更新时间:2023-09-26

我使用一个表单提交,对jqtransformed项目进行验证。奇怪的是,提交控制只工作一次。如果我在第一次尝试中提交了正确的表单,它就会发送值。但如果我不提交,它会提醒我,并且再也不提交了。

这是我的样作。

function jqkontrol(){
    var alis = jQuery("#alis_yeri div.jqTransformSelectWrapper span").text();
    var donus = jQuery("#donus_yeri div.jqTransformSelectWrapper span").text();
    if(alis!='Alış Yeri Seçiniz' && donus!='Dönüş Yeri Seçiniz'){
        jQuery("form#rezervasyon").submit();
        return true;
    }else{
        alert('Alış noktası seçiniz.');
        jQuery("form#rezervasyon").submit(function (e) {
            e.preventDefault();
        });
        return false;
    };
}
<form>
<input type="image" src="http://www.guiderentacar.com/yeni/tema/bg_devamet.png" onclick="jqkontrol();" />
</form>

这里是实时版本:源代码的实时演示。

下面的代码:

    jQuery("form#rezervasyon").submit(function (e) {
        e.preventDefault();
    });

为表单上的"submit"事件建立一个事件处理程序。处理程序是永久性的;除非你明确地把它拿走,否则它是永久的,但你不会这么做。因此,如果你有错误,你设置那个处理程序,然后从那一刻起,你将永远无法提交表单;该处理程序将始终阻止默认操作。

与其那样做,不如这样做(我认为):

  1. 修改提交图片的onclick处理程序:

    <input type="image" src="http://www.guiderentacar.com/yeni/tema/bg_devamet.png" onclick="jqkontrol(event);" />
    
  2. 更改验证码:

    function jqkontrol(ev){
       ev = ev || window.event; // for IE
       var alis = jQuery("#alis_yeri div.jqTransformSelectWrapper span").text();
       var donus = jQuery("#donus_yeri div.jqTransformSelectWrapper span").text();
       if(alis!='Alış Yeri Seçiniz' && donus!='Dönüş Yeri Seçiniz'){
          return true;
       }else{
          alert('Alış noktası seçiniz.');
          if (ev.preventDefault) ev.preventDefault();
          ev.returnValue = false; // for old IE
       };
    }