2012-08-10 36 views
0

我在頁面上有多個相同的表單,我試圖傳遞具有以下代碼提交的特定表單的id idJoueur的隱藏字段的值。目前,我只是成功地通過了第一個的價值,無論點擊哪一個。 HTML的在jquery中提交表單中獲取值

$(function() { 
    $("form").submit(function(e) { 
     var tramodifier = $("#idJoueur").val(); //variable to be populated from the 
     //specific form which is posted 
     alert(tramodifier); //alert for testing purposes 
     $.post($(this).attr("action"), $(this).serialize(), function(data) { 
      $("#result").html(data); 
     }); 
     e.preventDefault(); 
     $("tr^=#" + tramodifier).css("background-color", "grey"); 
    }); 
});​ 

<form action="/Admin/Match/LaCreation/1" id="1" method="post"> 
    <td style="width: 1px;"> 
     <input data-val="true" data-val-number="Le champ Int32 doit &amp;#234;tre un nombre." data-val-required="Le champ Int32 est requis." id="idJoueur" name="idJoueur" type="hidden" value="1" />....other stuff 
     <input id=1 class='ajax_multi_submit' type="submit" value="Créer" /> 
     </p> 
    </td> 
</form> 
<div id="result"></div> 
+3

您的頁面上不應該有多個元素的相同ID。我建議在你的ID中添加一個前綴,比如「idJoueur_1」,或者使用一個名字和你提交的表單作爲jQuery的上下文。 – 2012-08-10 21:05:21

回答

0

獲取通過使用this關鍵字提交的形式,並且發現使用這些技術中的一種形式中的元素:

$(this).children('#idJoueur').val(); 

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

我其實不確定一個人是否比另一個好;他們都爲我工作。

+0

不幸的是,這些技術不起作用。你可能對id和class是正確的,但它是通過MVC框架自動創建的。我似乎沒有控制這一點。 – Mad311 2012-08-11 00:19:52

0

而不是var tramodifier = $("#idJoueur").val();你應該這樣做:

var tramodifier = $(this).find('#idJoueur').val(); 

此外,你應該將屬性從ID更改爲類。選擇器然後是.idJoueur。

.find在元素的子元素中進行搜索。通過使用這種提交表單的上下文,您可以輕鬆提取正確的隱藏字段。文檔:http://api.jquery.com/find/

0

我終於解決了它。因爲我還將idJoueur傳遞給表單,所以我就把它拿起來了。

<script type="text/javascript"> 

    $(function() { 
     $("form").submit(function (e) { 
     var tramodifier = $(this).attr("value"); 
      $.post($(this).attr("action"), 
       $(this).serialize(), 
        function (data) { 
         $("#result").html(data); 
        }); 
      e.preventDefault(); 
      $("tr^=." + tramodifier).css("background-color", "grey"); 
     }); 
    }); 

</script> 
相關問題