-1

次のようなHTMLフォームがあります。

<form id="cart-form">
    <input type="text" name="quantity" />
    <input type="hidden" name="sku" value="SKU123" />
    <input type="submit" name="submit" value="Submit" />
</form>

私はこのように隠されたdivも持っています:

<div id="cart-special-offers" style="display:none;"><p>Would you like to take a look at our <a href="/catalogue/category/543" class="ignore-form">current promotions</a>?</p>
    <p><a href="/catalogue/category/543" class="ignore-form">Yes please</a></p>
    <p><a href="#" class="fancybox-close-link">No thanks</a></p>
</div>

フォームを送信するときに、非表示のdivをfancyboxポップアップウィンドウに表示したいと思います(フォームの送信を停止します)。

ユーザーが特別オファーの表示を選択した場合、フォームの送信は完全にキャンセルされ、ユーザーはリダイレクトされます。

ユーザーが(何らかの方法で)ファンシーボックスポップアップを閉じることを選択した場合は、ユーザーのフォームを送信する必要があります

私が現在持っているJSは次のとおりです。

$('#cart-form').submit(function(){
    $.fancybox.open([
        {
            href : '#cart-special-offers'
        }
    ]);


    return false;

});

$('.fancybox-close-link').click(function(){
    $.fancybox.close();
    $('#cart-form').submit();
});

これにより明らかにループが発生し、特別オファーを表示せずに閉じようとするたびにfancyboxウィンドウが表示されます。

これを防ぐにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

0

このようなことを試してください

$('#cart-form').submit(function (e)
{
  $.fancybox.open([
    {
        href : '#cart-special-offers'
    }
  ]);
  return !!e.submit;
});

$('.fancybox-close-link').click(function(){
   $.fancybox.close();
   $('#cart-form').submit({
        submit: true
     });
 });
于 2013-01-21T13:28:14.250 に答える
0

これは実際、物事を進めるためのばかげた方法でした。

投稿してページに移動したかったのですが、送信ボタンが2つありました。

私が気付いていなかったのは、送信ボタンの1つ(display:none)を非表示にし、ライトボックスをトリガーする場所にアンカーを配置し、ライトボックスの閉じるをクリックすると、非表示の入力のクリックをトリガーできることでした。

于 2013-01-21T15:15:30.463 に答える