2012-12-18 68 views
1

「添加到購物車」在我的Magento Mobile版本中不起作用。它建立了Jquery-Mobile。Magento添加到購物車不起作用

的Javascript控制檯說

Uncaught TypeError: Cannot call method 'submit' of undefined

我搜索了很久的代碼,但無法找到該錯誤。我對magento和Jquery-mobile版本有點新鮮。請幫忙。我會在下面分享我的代碼。

應用程序/設計/前端/移動/模板/目錄/產品/ view.phtml

<?php $_helper = $this->helper('catalog/output'); ?> 
<?php $_product = $this->getProduct(); ?> 
<script type="text/javascript"> 
    var optionsPrice = new Product.OptionsPrice(<?php echo $this->getJsonConfig() ?>); 
</script> 
<div id="messages_product_view"><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div> 
<div class="product-view"> 
    <div class="product-essential"> 
    <form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>> 
     <div class="no-display"> 
      <input type="hidden" name="product" value="<?php echo $_product->getId() ?>" /> 
      <input type="hidden" name="related_product" id="related-products-field" value="" /> 
     </div> 

     <div class="product-shop"> 
      <div class="product-name"> 
       <h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1> 
      </div> 

      <?php /* @todo 
      <?php if ($this->canEmailToFriend()): ?> 
       <p class="email-friend"><a href="<?php echo $this->helper('catalog/product')->getEmailToFriendUrl($_product) ?>"><?php echo $this->__('Email to a Friend') ?></a></p> 
      <?php endif; ?> 

      <?php echo $this->getReviewsSummaryHtml($_product, false, true)?> 
      <?php echo $this->getChildHtml('alert_urls') ?> 
      */ ?> 
      <?php echo $this->getChildHtml('product_type_data') ?> 
      <?php echo $this->getTierPriceHtml() ?> 
      <?php echo $this->getChildHtml('extrahint') ?> 


      <?php if (!$this->hasOptions()):?> 
       <div class="add-to-box"> 
        <?php if($_product->isSaleable()): ?> 
         <?php echo $this->getChildHtml('addtocart') ?> 
         <?php if($this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?> 
          <span class="or"><?php echo $this->__('OR') ?></span> 
         <?php endif; ?> 
        <?php endif; ?> 
        <?php echo $this->getChildHtml('addto') ?> 
       </div> 
       <?php echo $this->getChildHtml('extra_buttons') ?> 
      <?php endif; ?> 

      <?php if ($_product->getShortDescription()):?> 
       <div class="short-description"> 
        <h2><?php echo $this->__('Quick Overview') ?></h2> 
        <div class="std"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div> 
       </div> 
      <?php endif;?> 

      <?php echo $this->getChildHtml('other');?> 

      <?php if ($_product->isSaleable() && $this->hasOptions()):?> 
       <?php echo $this->getChildChildHtml('container1', '', true, true) ?> 
      <?php endif;?> 

     </div> 

     <div class="product-img-box"> 
      <?php echo $this->getChildHtml('media') ?> 
     </div> 

     <div class="clearer"></div> 
     <?php if ($_product->isSaleable() && $this->hasOptions()):?> 
      <?php echo $this->getChildChildHtml('container2', '', true, true) ?> 
     <?php endif;?> 
    </form> 
    <script type="text/javascript"> 
    //<![CDATA[ 
     var productAddToCartForm = new VarienForm('product_addtocart_form'); 
     productAddToCartForm.submit = function(button, url) { 
      alert("hiii"); 
      if (this.validator.validate()) { 
       var form = this.form; 
       var oldUrl = form.action; 

       if (url) { 
        form.action = url; 
       } 
       var e = null; 
       try { 
        this.form.submit(); 
       } catch (e) { 
       } 
       this.form.action = oldUrl; 
       if (e) { 
        throw e; 
       } 

       if (button && button != 'undefined') { 
        button.disabled = true; 
       } 
      } 
     }.bind(productAddToCartForm); 

     productAddToCartForm.submitLight = function(button, url){ 
      if(this.validator) { 
       var nv = Validation.methods; 
       delete Validation.methods['required-entry']; 
       delete Validation.methods['validate-one-required']; 
       delete Validation.methods['validate-one-required-by-name']; 
       if (this.validator.validate()) { 
        if (url) { 
         this.form.action = url; 
        } 
        this.form.submit(); 
       } 
       Object.extend(Validation.methods, nv); 
      } 
     }.bind(productAddToCartForm); 
    //]]> 
    </script> 
    </div> 

    <div class="product-collateral"> 
<?php foreach ($this->getChildGroup('detailed_info', 'getChildHtml') as $alias => $html):?> 
     <div class="box-collateral <?php echo "box-{$alias}"?>"> 
      <?php if ($title = $this->getChildData($alias, 'title')):?> 
      <h2><?php echo $this->escapeHtml($title); ?></h2> 
      <?php endif;?> 
      <?php echo $html; ?> 
     </div> 
<?php endforeach;?> 
    <?php /* @todo 
     <?php echo $this->getChildHtml('upsell_products') ?> 
     <?php echo $this->getChildHtml('product_additional_data') ?> 
    */ ?> 
    </div> 
</div> 

應用程序/設計/前端/移動/模板/目錄/產品/視圖/ addtocart.phtml

<?php $_product = $this->getProduct(); ?> 
<?php $buttonTitle = $this->__('Add to Cart'); ?> 
<?php if($_product->isSaleable()): ?> 
    <div class="add-to-cart"> 
     <?php if(!$_product->isGrouped()): ?> 
     <label for="qty"><?php echo $this->__('Qty:') ?></label> 
     <input type="text" name="qty" id="qty" maxlength="12" value="<?php echo $this->getProductDefaultQty() * 1 ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" /> 
     <?php endif; ?> 
     <button type="button" title="<?php echo $buttonTitle ?>" class="button btn-cart" onclick="productAddToCartForm.submit(this)"><span><span><?php echo $buttonTitle ?></span></span></button> 
     <?php echo $this->getChildHtml('', true, true) ?> 
    </div> 
<?php endif; ?> 

正如你所看到的,我在JavaScript提交函數中給出了一個提醒。但它沒有出現。此行之後

回答

1

嘗試的console.log(productAddToCartForm)右:

 var productAddToCartForm = new VarienForm('product_addtocart_form'); 

的輸出是什麼? 確保包含這些VarienForm js類的文件實際上已加載到頁面中。基本上檢查控制檯的任何潛在的缺少JS庫,如果你沒有修改任何可能的原因...

0

我注意到問題發生在Internet Explorer由於JavaScript文件被合併(在管理員下的設置系統 - >配置 - >開發者)。

相關問題