Jquery比较动态生成控件的值

时间:2016-09-08 05:01:49

标签: javascript jquery asp.net-mvc-4

您好我正在开发一个mvc4 jquery应用程序。我有动态生成的隐藏字段,我正在为它绑定一些值,如下所示。

@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>
}

在某些时候,@group.currentStatus的值将为NotVerified。例如,如果我生成5行数据,则所有5行的值将为NotVerified。在这种情况下,我想显示一些消息,否则什么都不显示。因此,只要数据的所有行都保持相同的值,那么我想显示一条消息。这是我的jquery函数,我使用了以下逻辑。

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 {

    }
});

我无法比较每一行数据。如果所有值都相同,那么我只想显示一次烤箱信息。我应该在这里使用什么逻辑?提前谢谢。

我现在尝试如下。

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

现在我的问题是烤面包机信息会显示多次。如果所有元素都相同,我只想显示一次。

1 个答案:

答案 0 :(得分:0)

您可能需要考虑将此逻辑放在生成viewmodel的代码中,并输出一个标志来显示消息,而不是在渲染视图时执行此操作。

这极大地简化了您的逻辑。一个例子:

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

然后在您的视图中(在客户端<script>阻止内)

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