У вас есть несколько проблем с вашим кодом.Прежде всего, у вас есть жестко закодированные значения атрибута Id
внутри цикла foreach, который создаст одно и то же значение Id для более чем одного элемента.
Поскольку у вас есть несколько элементов, которые вы визуализируете внутри цикла, вы должны рассмотретьиспользуя относительные методы, такие как closest
и find
.Я также обернул бы tds внутри родительского элемента, который можно использовать для ограничения области при использовании относительных методов.
Я удалил атрибут Id
и дал простой атрибут date1 и date2 для каждого tds
<table>
@foreach (var item in Model)
{
<tr>
<td date1> @Html.EditorFor(x => item.Date1)</td>
<td date2>@Html.DisplayFor(x => item.Date2)</td>
</tr>
}
</table>
Теперь в своем сценарии вы можете использовать этот атрибут для прослушивания события изменения в элементе input
, использования 2 значений даты, создания Date
объектов из этих строк и выполнения проверки.
$(document).ready(function () {
$("td[date1] > input").bind("change", function () {
var $tr = $(this).closest("tr");
var date1 = $(this).val();
var date2 = $tr.find("td[date2]").text();
// Make sure to check date1 and date2 for empty string before trying to parse
var d1 = Date.parse(date1);
var d2 = Date.parse(date2);
if (d1 > d2) {
console.log("Outside of the Editor Box");
} else {
console.log("Date ok");
}
});
});