2017-03-07 3 views
1

Wir verwenden Opencart 1.5.6.4, das den folgenden Code verwendet, um einen Artikel in den Warenkorb hinzuzufügen.JavaScript Onclick Event funktioniert nicht auf Mobilgerät

<input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" /> 

Uns ist aufgefallen, dass das onclick-Ereignis Javascript auf mobilen Geräten nicht funktioniert.

Die Javascript-Funktion ist als

function addToCart(product_id, quantity) { 
    quantity = typeof(quantity) != 'undefined' ? quantity : 1; 

     $.ajax({ 
      url: 'index.php?route=checkout/cart/add', 
      type: 'post', 
      data: 'product_id=' + product_id + '&quantity=' + quantity, 
      dataType: 'json', 
      success: function(json) { 
       $('.success, .warning, .attention, .information, .error').remove(); 

       if (json['redirect']) { 
        location = json['redirect']; 
       } 

       if (json['success']) { 
        $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>'); 

        $('.success').fadeIn('slow'); 

        $('#cart-total').html(json['total']); 

        $('html, body').animate({ scrollTop: 0 }, 'slow'); 
       } 
      } 
     }); 
    } 
+0

In welchem ​​mobilen Browser funktioniert der onclick nicht? – Jer

+0

Chrome/Safari - sowohl von iPhone und Android –

Antwort

0

Der Ajax aufgrund versagte zum www. fehlt auf der Website-URL.

-2

try folgt falsch nach AJAX Rückkehr sprudeln zu stoppen.

0

Überprüfen Sie, ob diese Funktion auch ausgeführt wird. Platziere etwas console.log vielleicht.

Über @ volodymyr-duday anwser: anstelle von return false gibt es eine Methode im Ereignisobjekt stopPropagation().

Wenn die Funktion nicht ausgeführt wird, versuchen Sie, sie möglicherweise an ein Berührungsereignis wie touchend anzuhängen.

1

Versuchen Sie, Ihrem Code Berührungsereignisse hinzuzufügen.

$("input.button").on("click touchend", function() { 
    addToCart($(this).attr("data-product-id")); 
}); 

function addToCart(product_id, quantity) { 
    quantity = typeof(quantity) != 'undefined' ? quantity : 1; 

    $.ajax({ 
     url: 'index.php?route=checkout/cart/add', 
     type: 'post', 
     data: 'product_id=' + product_id + '&quantity=' + quantity, 
     dataType: 'json', 
     success: function(json) { 
      $('.success, .warning, .attention, .information, .error').remove(); 

      if (json['redirect']) { 
       location = json['redirect']; 
      } 

      if (json['success']) { 
       $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>'); 

       $('.success').fadeIn('slow'); 

       $('#cart-total').html(json['total']); 

       $('html, body').animate({ 
        scrollTop: 0 
       }, 'slow'); 
      } 
     } 
    }); 
} 

html:

<input type="button" value="<?php echo $button_cart; ?>" data-product-id="<?php echo $product['product_id']; ?>" class="button" /> 

Sie können here mehr Bezug auf Touch-Ereignisse finden.

+0

Hallo, Vielen Dank für Ihre Antwort, leider hat Ihre Antwort den Knopf komplett zerstört. –

+0

Das sollte nicht passieren. Hast du versucht zu debuggen? –

+0

dies funktionierte für mich, danke – Eoiner

0

Ich kann sehen, dass Sie jQuery verwenden. Wenn Ihr Click-Ereignis, nicht feuern Sie

$(document).ready(function(){ 
    $("[your-selector-here]").on("click touchstart", function(){ 
     //do stuff 
    }); 
}); 

Ansonsten versuchen kann, ich sehe Sie benötigen zwei Argumente auf Ihrer Methode, sondern auf Ihre Veranstaltung nur ein Sie haben

function addToCart(product_id, quantity){} 

onclick="addToCart('<?php echo $product['product_id']; ?>');" 
+0

Vielleicht muss dieser bestimmte Warenkorb Artikel nicht, er verwendet den Standardwert in der ersten Zeile der Funktion. –

Verwandte Themen