1

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>

これがライブ バージョンです:ソースのライブ デモ。

4

1 に答える 1

3

このコードは次のとおりです。

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

フォームの「送信」イベントのイベント ハンドラを確立します。ハンドラーは永続的です。まあ、それはあなたが明示的に取り除かない限り永続的です。したがって、エラーが発生した場合、そのハンドラーを設定すると、その時点からフォームを送信できなくなります。そのハンドラーは常にデフォルトの操作を防ぎます。

それを行う代わりに、次のことを行います(私は思います):

  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
       };
    }
    
于 2013-01-04T14:36:29.893 に答える