jQuery防止默认表单提交第二次出错

时间:2013-01-04 14:32:06

标签: javascript jquery validation preventdefault

我正在使用表单提交并对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>

以下是实时版:Live Demo of the Source.

1 个答案:

答案 0 :(得分:3)

这段代码:

    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
       };
    }