2012-02-07 11 views
1

私は25の商品をページに表示しています。各製品にはフォームが含まれています。 商品を右のミニカートにドラッグする必要があります。このためには、ドラッグする製品のフォームIDが必要です。jqueryを使用して隠しフォームの送信ボタンをクリックしますか?

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> 

私は、これは大きな問題ではないと思うが、どういうわけか、私はすることができません修理する。 本当にありがとうございます。

+0

あなたのhtml構造はどのように見えますか? – ggreiner

答えて

1

どうしたらいいですか?

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

まず第一に私はフォームIDを持っていません。私はページに多くの製品があるので、どの製品がカートに追加されているのかを見つけなければなりません。もし私が望んでいないカートページにリダイレクトされたページを提出すると、 jqueryを使用して入力ボタンをクリックするだけです。 –

+0

私は静的なIDを与える場合、あなたのコードは正常に動作しています。しかし、私のシナリオに従って助けてくれますか?私は変数にformIdを保存しています。上記のコードでその変数を使用する方法。 –

+0

更新された回答を参照してください。 – AlienWebguy

1

は(no形式の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は、Firebugコンソールの関数ではありません。 –

+0

あなたは何を得ていますか? – pete

+0

私は前のコメントにエラーを貼り付けました。子どもの入力(type = "submit") ')。クリック();クリックしてください。このコードは動作していますが、静的なform_idの代わりに変数名を配置する必要があります –

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リクエストであり、フォーム送信と同様にサーバー側で処理できます。

第2に、ajaxコール成功のコールバック関数でチェックできるサーバー側からの応答(処理方法に応じて成功/失敗)を送信できます。function(data){...}上記。 これがうまくいきたいです

+0

jquery submit関数を使用すると、商品がカートに追加されますが、ページが更新されてカートページにリダイレクトされます。私はページをリフレッシュさせたくありませんでした。なぜ私はクリック機能を使用したいのですか –

0

また、CSSの中に隠されたそれらの入力を行うことができます:

visibility: hidden; 

どれjQueryのこれらの入力に作用することに関係なく、それはフロントエンドかどうかに見えるのかどうかの動作するはずです。

関連する問題