2015-02-07 40 views
-1

對於一個小購物車我有一個頁面上的多個表單。每個表格都代表了一系列行動觸發器的產品數量。除了表格之外,我還有一些我需要使用的數據。試圖獲取最接近的表單ID?

無論如何,我需要獲取對應於動作觸發器的表單ID。

所以我創建了一個函數,當一個動作按鈕被點擊時被調用。

function transferData() { 
    // var form_id= $(this).closest("form").prop("id"); 
    // var form_id= $(this).prev("form").prop("id"); 
    var form_id= $(this).closest('td').parent().closest('form').prop('id'); 

動作由

<button name="submit[1]" type="button" onClick="transferData()" class="btn btn-info btn-sm"><i class="fa fa-refresh"></i></button> 

HTML結構simplfy

<tr><form id="form_update[1]" name="form_update[1]" action="cart_update.php" method="post"><td data-th="Product"><div class="row"> 
           <div class="col-sm-2 hidden-xs"><img width="100" src="../images/frere.jpg" alt="Frere" class="img-responsive"/></div> 
           <div class="col-sm-10"> 
            <h4 class="nomargin">Frere</h4> 
            <p>bad boy frere</p> 
           </div> 
          </div></td><td data-th="Price">$25.00</td><td data-th="">&nbsp;</td><td data-th="Quantity"> 
          <input type="number" min="0" name="item_qty_summary[1]" class="form-control text-center" value="4"> 
         </td><td data-th="Subtotal" class="text-right" >$100</td><td class="actions text-right"> 

          <button name="submit[1]" type="submit" onClick="transferData(this)" class="btn btn-info btn-sm"><i class="fa fa-refresh"></i></button> 

          <a href="cart_update.php?removep=2015002&return_url=aHR0dC90aXF1ZXNob3AvaW5jbHVkZXMvdmlld19jYXJ0XzIwMTUucGhw" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></a>                
         </td></form></tr> 

觸發,但我得到一個未定義的錯誤信息,而不是ID

我是什麼俯瞰?

+0

哪有我們回答這個問題,依賴於HTML的結構,而沒有看到任何HTML? – 2015-02-07 17:40:26

+0

你可否請你發佈你的html結構? – 2015-02-07 17:40:27

+0

請粘貼您的html代碼,可能是dom遍歷的問題。 – Farhan 2015-02-07 17:40:33

回答

3

首先,將你的事件處理程序的JavaScript ...

$("button[type='submit']").on('click', transferData); 

......然後,在事件處理程序,this是點擊的元素(一個提交按鈕):

function transferData() { 
    var form_id= this.form.id; 
    ... 
} 
+0

所有的建議,這一個按預期工作!希望我可以使用它! – alex 2015-02-07 18:26:23

+0

但是如何才能提交函數transferData中的最後一個動作呢? 'function transferData(elem){var_form_id = this.form.id; ('#input1:radio [name = dest]:checked')。val()) $ alert('form id'+ form_id +'dest1'+ radioValDest); form_id.Submit(); }' – alex 2015-02-07 18:32:52

+0

我需要在提交表單之前更改隱藏的輸入字段值。我設置的隱藏輸入字段等於表單 – alex 2015-02-07 18:42:01

3

參數傳遞在函數象下面這樣:

function transferData(elem) { 

而且使用$(elem)代替$(this)並在你的HTML中使用這樣的:

onClick="transferData(this)" 

從HTML的更新,你可以這樣使用:

var form_id= $(elem).closest('form').attr('id'); 
+0

我看你做什麼,嘗試但沒有得到結果;(順便說一句,我已經添加一個簡化的HTML結構 – alex 2015-02-07 17:53:46

+0

它的工作原理,但爲什麼你這樣使用id?'form_update [1]'其中[]可能導致問題與編號工作.... 看到這個答案:http://stackoverflow.com/questions/22448626/how-to-take-id-as-selector-when-used-hash/22448650#22448650 – 2015-02-07 17:58:08

+0

form_update [x ]表示產品購物車中的產品行,所以5個產品在購物車中,並且我有5個表單id form_update [0] ... form_update [4] .... – alex 2015-02-07 17:59:54