使用jquery单击隐藏表单中的提交按钮?

时间:2012-02-07 04:40:21

标签: ajax forms jquery-ui jquery

我在一个页面中显示了25个产品。每个产品都包含一个表单。 因为我必须将产品拖到右边的迷你推车上。为此,我需要拖动产品的表单ID。

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

我正在使用jquery find函数,但它不起作用。

这是我的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>

我认为这不是一个大问题,但不知怎的,我无法修复它。 非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

请尝试使用drop函数(不需要表单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');
}

答案 1 :(得分:1)

为什么不呢?

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

答案 2 :(得分:0)

而不是调用.click(),只需将其替换为.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){...}中检入回调函数。 希望这有帮助

答案 3 :(得分:0)

你也可以在css中隐藏这些输入:

visibility: hidden;

任何依赖这些输入的jQuery都应该工作,无论它是否在前端可见。