2015-11-19 1 views
0

J'ai une table, où l'utilisateur peut sélectionner des échantillons. Dans chaque ligne il y a un champ caché, qui contient un identifiant unique. Je voudrais obtenir la valeur du champ caché de la ligne sélectionnée (cochée) dans un tableau, afin qu'elle puisse être transmise pour traitement.
Jusqu'à présent, ce que j'ai:Sélectionnez une valeur de champs cachés dans une table

var data = Array(); 
$("#nonScheduledSamples tr").each(function (i) { 
    if ($(this).prop("checked")) { 
     data[i] = $(this).find("#item_SampleId").val(); 
    } 
}); 

Le tableau est généré par une vue partielle MVC:

@foreach (var item in Model.SampleInfo) 
{ 
<tr> 
    @Html.HiddenFor(i=>item.SampleId) 
    <td class="text-center">@Html.CheckBoxFor(i=>i.Selected)</td> 
</tr> 
} 

Ce retourne un tableau vide pour moi. Toute aide vraiment appréciée.

Mise à jour # 1:
J'ai modifié le code, de sorte que le HTML ressemble à ceci:

<input data-sampleid="60815" data-val="true" data-val-required="The Selected field is required." id="SampleIdSelect" name="SampleInfo[0].Selected" type="checkbox" value="true"> 

et jquery:

$("#nonScheduledSamples tr input").each(function() { 
    if ($(this).prop("checked")) { 
      data.push($("#SampleIdSelect").data("sampleid")); 
    } 
}); 

À l'heure actuelle, les données array est rempli avec la même valeur que data-sampleid mais avec des temps égaux, autant de case à cocher est cochée. Qu'est-ce que je fais mal?

Merci d'avance.

+0

Le html est également partagé –

+0

La table est générée par une vue partielle MVC. – Paxsentry

+0

donc html sera utile pour voir ce qu'il a généré :) Très probablement votre tableau SampleInfo est vide et donc aucune ligne n'est générée, vous pouvez également le vérifier avec le débogueur – mikus

Répondre

0

Vous devriez essayer ceci.

@foreach (var item in Model.SampleInfo) 
{ 
<tr> 
    @Html.HiddenFor(i=>item.SampleId ,new { @class="item_SampleId"}) 
    <td class="text-center">@Html.CheckBoxFor(i=>i.Selected)</td> 
</tr> 
} 
+0

Désolé mais cela ne fonctionne pas. Je suis sûr à 100% que c'est une question jquery pas un rasoir mvc, c'est pourquoi je n'ai pas ajouté la balise – Paxsentry

0

La conclusion finale:

Html:

<input data-sampleid="60815" data-val="true" data-val-required="The Selected field is required." id="SampleIdSelect0" name="SampleInfo[0].Selected" type="checkbox" value="true"> 

Jquery:

$("#nonScheduledSamples tr input").each(function() { 
    if ($(this).prop("checked")) { 
      var x = this.id.slice(14); 
      data.push($("#SampleIdSelect" + x).data("sampleid")); 
    } 
}); 

Trancher Ainsi, la partie de texte identifiant, et obtenir la valeur de données du même identifiant, qui peut être poussé dans le tableau. C'était un combat ...

Probablement il y a de meilleures solutions, si vous avez partager s'il vous plaît.