2012-12-05 54 views
0

我將此javascript連接到服務器代碼,但我無法選擇正確的元素。無論我選擇哪個按鈕,video_id總是成爲第一個(本例中爲「bbc」)。如何根據所選按鈕更改javascript/jquery以選擇video_id的正確值?如何選擇使用javascript的正確元素?

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".removebutton").submit(function(event){ 
     event.preventDefault(); 
      $.ajax({ 
       type:"POST", 
       url:"/munch_video/", 
       data: { 
         'video_id': $('#video_id').val(), // from form 
         'playlist': $('.playlist').val(), // from form 
         'add_remove': $('.add_remove').val(), // from form 
         }, 
       success: function(message){       
         alert(message); 
         $('.span8').html(message); 
        } 
      }); 
      return false; 
     }); 

    }); 
</script> 


     <form method='post' action = '/munch_video/ ' class = 'removebutton'>{% csrf_token %} 
      <input type="hidden" value="Channel" class = "playlist"/> 
      <input type="hidden" value="bbc" id = "video_id"/> 
      <input type="hidden" value="remove_video" class = "add_remove"/> 

      <input type='submit' class="btn btn-danger" value='Remove from plate'/> 
     </form> 

     <form method='post' action = '/munch_video/ ' class = 'removebutton'>{% csrf_token %} 
      <input type="hidden" value="Channel" class = "playlist"/> 
      <input type="hidden" value="toyota" id = "video_id"/> 
      <input type="hidden" value="remove_video" class = "add_remove"/> 

      <input type='submit' class="btn btn-danger" value='Remove from plate'/> 
     </form> 

     <form method='post' action = '/munch_video/ ' class = 'removebutton'>{% csrf_token %} 
      <input type="hidden" value="Channel" class = "playlist"/> 
      <input type="hidden" value="gm" id = "video_id"/> 
      <input type="hidden" value="remove_video" class = "add_remove"/> 

      <input type='submit' class="btn btn-danger" value='Remove from plate'/> 
     </form> 

     can be multiple buttons, each with a different video_id value 
+1

ID必須是唯一做的發現。這不起作用。 – Ohgodwhy

+0

我現在在代碼中將video_id更改爲class而不是id。 – sharataka

回答

1

該選擇$('#video_id')給你收集的選擇匹配,但使用VAL()就可以了總是appliedfirst元素。您可以通過this作爲context with selector得到video_id與當前表格的descendants

變化

$('#video_id').val() 

$('#video_id', this).val() 

或使用find()方法來搜索ID在後代

$(this).find('#video_id').val(); 

編輯刪除點擊形式成功的情況下

$(document).ready(function() { 
    $(".removebutton").submit(function(event){ 
    currentForm = $(this); 
    event.preventDefault(); 
     $.ajax({ 
      type:"POST", 
      url:"/munch_video/", 
      data: { 
        'video_id': $('#video_id').val(), // from form 
        'playlist': $('.playlist').val(), // from form 
        'add_remove': $('.add_remove').val(), // from form 
        }, 
      success: function(message){       
        alert(message); 
        $('.span8').html(message); 
        currentForm.remove(); 
       } 
     }); 
     return false; 
    }); 

}); 
+0

很好,這個工作...謝謝!另一個問題:你知道我將如何刪除成功選擇的元素。由於表單被封裝在div class =「span8」中,並且由於message再次返回video_id的值,所以我嘗試了$('。span8')。removeClass(message)...但它似乎不起作用。 – sharataka

+0

您已將收到的回覆分配給.span8現在您要從中刪除哪個元素? – Adil

+0

選定的按鈕。例如,如果我選擇了「gm」按鈕,我想刪除該表單/按鈕。 – sharataka

2

問題是因爲你有多個具有相同ID的元素。因此,正在挑選相同的元素。

既然你刪除按鈕點擊時,您可以在喜歡

'video_id': $(this).find('#video_id').val()