3 votes

Jquery pour comparer la valeur d'un contrôle généré dynamiquement

Bonjour, je développe une application mvc4 jquery. J'ai généré dynamiquement un champ caché et j'y lie une valeur comme ci-dessous.

@foreach (var group in Model.detailsbyclientId) {
    <tr>
        <td> @group.clientName </td>
        <td> @group.employeeId </td>
        <td> @group.employeeName </td>
        <td>@group.Nationality</td>
        <td> @group.documentType </td>
        <td scope="col">
            <input type="button" class="btn btn-primary btn-cons" value="View Document" onclick="showDocumentData('@group.upld_Id');" />
        </td>
        <td id="Hi">@group.currentStatus</td>
        <td><input type="hidden" id="Status" value="@group.currentStatus"/></td>
        <td></td>
    </tr>
}

A un moment donné, la valeur de @group.currentStatus ne sera pas vérifié. Par exemple, si je génère 5 lignes de données, la valeur des 5 lignes sera NotVerified. Dans un tel cas, je veux afficher un message ou ne rien afficher. Ainsi, si toutes les lignes de données ont la même valeur, je veux afficher un message. C'est ma fonction jquery et j'ai utilisé la logique ci-dessous.

var list = new Array();
$('input[type=hidden]').each(function (i, item) {
    list.push($(item).val());
    if(list[i]==list[i+1]) {
        fun_toastr_notify('success', 'Please verify the document');
    } else {

    }
});

Je ne suis pas en mesure de comparer chaque ligne de données. Si toutes les valeurs sont identiques, je ne veux afficher le message du grille-pain qu'une seule fois. Quelle logique dois-je utiliser ici ? Merci d'avance.

J'ai essayé comme ci-dessous maintenant.

for(var i=0;i<list.length;i++) {
    if(list[i]==list[i+1]) {
        fun_toastr_notify('success', 'Please verify the documents');
    }
}

Maintenant, mon problème est que le message du grille-pain s'affiche plus d'une fois. Je veux l'afficher une seule fois si tous les éléments sont égaux.

0voto

Todd Wilcox Points 2781

Vous pouvez envisager de placer cette logique dans le code qui génère le modèle de vue et de sortir un drapeau pour afficher le message, plutôt que de le faire pendant le rendu de la vue.

Cela simplifie grandement votre logique. Un exemple :

public class YourModel {
    public List<ClientDetails> detailsbyclientId {get;set;}
    public bool AllClientsUnverified { get { return detailsbyclientId.All(client => client.currentStatus == "Unverified"); } }
}

Et ensuite dans votre vue (à l'intérieur d'un client <script> bloc)

if (@Model.AllClientsUnverified) {        
    fun_toastr_notify('success', 'Please verify the documents');
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X