2012-02-07 129 views
1

我在一个页面中显示了25个产品。每个产品都包含一个表单。 因为我必须将产品拖放到右侧的迷你购物车上。为此,我需要拖动产品的表单ID。使用jquery点击隐藏窗体中的提交按钮?

在jquery的帮助下,我得到了表单的id。现在我想单击该表单中的提交按钮。有没有什么办法可以在jQuery的帮助下做到这一点。

我正在使用jQuery查找功能,但它不工作。

这里是我的jQuery代码:

$("#ajaxCartUpdate").droppable({ 
       accept:'.ui-draggable', 
       drop: function(ev, ui) { 
        var td_obj = document.getElementsByClassName('view-test-attributes')[0].getElementsByTagName('table')[0].getElementsByTagName('td');       
        var form_id = td_obj[td_obj.length-1].getElementsByTagName('form')[0].id; 
        document.getElementById(form_id).action = ''; 
        document.getElementById(form_id).find('.ajax-cart-submit-form-button').click(); 

       } 
      }); 

这里是我的HTML:

<div class="add-to-cart"> 
    <form class="ajax-cart-submit-form" id="uc-product-add-to-cart-form-2-1" method="post" accept-charset="UTF-8" action="/js_ajax/"> 
<div> 
    <input type="hidden" value="1" id="edit-qty-3" name="qty"> 
    <input type="submit" class="form-submit node-add-to-cart ajax-cart-submit-form-button ajax-cart-processed" value="Add to cart" id="edit-submit-2" name="op"> 
    <input type="hidden" value="form-c75deef67555676e4579cd756840cea6" id="form-c75deef67555676e4579cd756840cea6" name="form_build_id"> 
    <input type="hidden" value="dece0af3cebbdc2ad735891fc7639321" id="edit-uc-product-add-to-cart-form-2-form-token-1" name="form_token"> 
    <input type="hidden" value="uc_product_add_to_cart_form_2" id="edit-uc-product-add-to-cart-form-2-1" name="form_id"> 
    <input type="hidden" value="2" id="edit-product-nid-3" name="product-nid"> 

</div> 

我认为这不是一个大问题,但不知何故,我不能修理它。 您的帮助真的很感激。

+0

你的html结构是什么样的? – ggreiner 2012-02-07 04:40:59

回答

1

为什么不能这样?

$("#ajaxCartUpdate").droppable({ 
    accept:'.ui-draggable', 
    drop: function(ev, ui){ 
     $(ui.draggable).closest('form').attr('action','').children('input[type="submit"]').click(); 
    } 
}); 
+0

首先,我没有form-id。由于页面上有许多产品,我必须找到哪个产品加入购物车。如果我使用提交页面重定向到购物车页面,我不想要。我只是想要使用jquery点击输入按钮。 – 2012-02-07 04:55:45

+0

如果我给出静态ID,那么你的代码工作正常。但你能帮我按照我的情况。我将formId保存在一个变量中。如何在上面的代码中使用该变量。 – 2012-02-07 05:09:35

+0

查看更新的答案。 – AlienWebguy 2012-02-07 05:50:01

1

试试这个你降功能(无需格式ID,但仍获得):

drop: function(ev, ui) { 
    $('.view-test-attributes:first table:first td:last').attr('action', '').submit(); 
    //if you still need the form id... 
    //var form_id = $('.view-test-attributes:first table:first td:last').attr('action', '').attr('id'); 
} 
+0

不工作。给错误document.getElementById(form_id).find不是萤火虫控制台中的函数。 – 2012-02-07 04:47:40

+0

你得到的错误是什么? – pete 2012-02-07 04:58:21

+0

我在前面的评论中粘贴了错误。 。$( '#UC-产品添加到购物车外形2-1')ATTR( '动作', '')。子女( '输入[类型= “提交”]')点击();此代码正在工作,但我需要放置一个变量名称,而不是静态form_id – 2012-02-07 05:10:42

0

而不是调用。点击()简单地.submit替换它()的。

编辑: 现在我明白了这个问题。试着这样做:在

JAVASCRIPT: 
var productData = 'name='+ $("#idForName").val() + '&qty=' + $("#idForQty").val(); 

$.ajax({ 
    type: "POST", 
    url: "bin/process.php", 
    data: productData , 
    success: function(data) { 
    //Whatever you want to do at success 
    }); 
    } 
}); 
return false; 

那么这将是一个POST请求,你可以在服务器端处理它就像一个表单提交。

其次,您可以从服务器端发送响应(成功/失败,具体取决于您如何处理它),您可以在ajax call success中检查回调函数:function(data){...} 。 希望这会有帮助

+0

如果我只使用jquery提交功能,产品将添加到购物车,但页面会刷新并重定向到购物车页面。我不希望页面刷新。这就是为什么我想要使用点击功能 – 2012-02-07 04:50:09

0

你也可以将隐藏的CSS中的那些输入:

visibility: hidden; 

任何jQuery的作用在这些投入应该不管它是在前端或不可见的工作。