3

Magento ストアの 1 つに対して次の Jquery ajaxSubmit を実行しようとしています。フォームからもアップロードするファイルが 2 つあるため、ajaxSubmit を使用します (データが必要であることを意味します$_FILE)。しかし、ajaxSubmit を実行すると、通常のフォーム送信も実行されます。これにより、ページが更新され、次のページに移動します。同じページにとどまる代わりに、ポップアップ ボックスがいくつかあります。これreturn false;を防ぐ必要がありますが、失敗します。送信コード:

$('#quickbuyform').submit(function (){

    // No Accessories: normal submit
    if ($('#accessories ul li').size()==0) {
        return true;
    }

    strName = "<?php echo $_product->getName() ?>";

    // loading message
    $('#pop_accessories_area_message').html("We are adding '"+strName+"' into your shopping cart ...");
    // Pop with loading
    popAccessories();

    // loading icon
    //var dataString = $('#quickbuyform').serialize();
    $.ajaxSubmit({  
          type: "POST",  
          url: $('#quickbuyform').attr('action'),
          data: dataString,  
          beforeSubmit:  showRequest,
          success: function() {
            // display cart link:
            $('#pop_accessories_area_message').html(strName+" was added to <a href='<?php echo $this->getUrl('checkout/cart') ?>'>your shopping cart</a>.");
            $('.pop_accessories_area_button').show();
            //window.location = '<?php //echo $this->getUrl('checkout/cart') ?>';
          }  
        });
    return false;
});

これは私が今持っているものですが、今e.preventDefault()は何も送信しません。ただ立ち寄って('#quickbuyform').ajaxSubmit

$('#quickbuyform').submit(function (e){
    e.preventDefault();
    // No Accessories: normal submit
    if ($('#accessories ul li').size()==0) {
        return true;
    }

    strName = "<?php echo $_product->getName() ?>";

    // loading message
    $('#pop_accessories_area_message').html("We are adding '"+strName+"' into your shopping cart ...");
    // Pop with loading
    popAccessories();

    $('#quickbuyform').ajaxSubmit({  
          type: "POST",  
          url: $('#quickbuyform').attr('action'),
          data: dataString,  
          success: function() {
            // display cart link:
            $('#pop_accessories_area_message').html(strName+" was added to <a href='<?php echo $this->getUrl('checkout/cart') ?>'>your shopping cart</a>.");
            $('.pop_accessories_area_button').show();
            //window.location = '<?php echo $this->getUrl('checkout/cart') ?>';
          }  
        });
    return false;
});
4

3 に答える 3

3

preventDefaultイベントオブジェクトのメソッドを呼び出すことで、通常のフォーム送信を停止することができます。

$('#quickbuyform').submit(function (e) {
    e.preventDefault();
    ...
});
于 2012-12-13T03:27:58.203 に答える
0

代わりに $.ajax を使用するかe.preventDefault();、上記のように試してください。

$.ajax({
          type: "POST",  
          url: $('#quickbuyform').attr('action'),
          data: dataString,  
          beforeSubmit:  showRequest,
          success: function() {
            // display cart link:
            $('#pop_accessories_area_message').html(strName+" was added to <a href='<?php echo $this->getUrl('checkout/cart') ?>'>your shopping cart</a>.");
            $('.pop_accessories_area_button').show();
            //window.location = '<?php //echo $this->getUrl('checkout/cart') ?>';
          }  
});
于 2012-12-13T03:29:44.213 に答える
0

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

$("#quickbuyform").submit(function(e){
    e.preventDefault();
  });​

これにより、jQuery イベントのデフォルトの動作が妨げられます。

于 2012-12-13T03:31:00.133 に答える