Итак, мой код ниже. Мне нужно отключить редактор IsShortlisted
, если оба поля или один из полей DateManagerNotified
и DateManagerReplied
пусты. В настоящее время это работает, но это влияет только на первую итерацию в списке моделей.JQuery отключить, чтобы повлиять на все элементы модели, если пустое поле
@model IEnumerable<Recruitment.Model.VacancyApplicant>
@{
ViewBag.Title = "Shortlistings";
}
<h2>Unprocessed Applicants for @Html.ActionLink(@Model.First().Vacancy.JobRef, "Details", "Vacancy", new { id = Model.First().VacancyId }, null)</h2>
@using (Html.BeginForm("Shortlist", "VacancyApplicant", FormMethod.Post))
{
@Html.AntiForgeryToken()
<table class="table table-striped table-hover table-responsive">
<thead>
<tr>
<th>
@Html.ActionLink("First Name", "Shortlist", new { sort = ViewBag.FirstNameSort, vacancyId = Model.First().VacancyId })
</th>
<th>
@Html.ActionLink("Last Name", "Shortlist", new { sort = ViewBag.LastNameSort, vacancyId = Model.First().VacancyId })
</th>
<th>
@Html.ActionLink("Date Received", "Shortlist", new { sort = ViewBag.DateReceivedSort, vacancyId = Model.First().VacancyId })
</th>
<th>
@Html.ActionLink("Date Manager Notified", "Shortlist", new { sort = ViewBag.DateManagerNotifiedSort, vacancyId = Model.First().VacancyId })
</th>
<th>
@Html.ActionLink("Date Manager Replied", "Shortlist", new { sort = ViewBag.DateManagerRepliedSort, vacancyId = Model.First().VacancyId })
</th>
<th>
@Html.ActionLink("Shortlisted?", "Shortlist", new { sort = ViewBag.IsShortlistedSort, vacancyId = Model.First().VacancyId })
</th>
<th>
@Html.ActionLink("Email?", "Shortlist", new { sort = ViewBag.EmailSort, vacancyId = Model.First().VacancyId })
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.TextBoxFor(modelItem => item.Applicant.FirstName, new { @class = "form-control", disabled = "disabled" })
</td>
<td>
@Html.TextBoxFor(modelItem => item.Applicant.LastName, new { @class = "form-control", disabled = "disabled" })
</td>
<td>
@Html.TextBoxFor(modelItem => item.DateReceived, "{0:dd/MM/yyyy}", new { @class = "form-control", disabled = "disabled" })
</td>
<td>
<span id="datenotified">
<div class="input-group">
@Html.EditorFor(modelItem => item.DateManagerNotified, new { htmlAttributes = new { @class = "form-control date-picker", placeholder = "Datepicker..." }, })
<label class="input-group-addon btn">
<span class="fa fa-calendar"></span>
</label>
</div>
</span>
</td>
<td>
<span id="datereplied">
<div class="input-group">
@Html.EditorFor(modelItem => item.DateManagerReplied, new { htmlAttributes = new { @class = "form-control date-picker", placeholder = "Datepicker..." }, })
<label class="input-group-addon btn">
<span class="fa fa-calendar"></span>
</label>
</div>
</span>
</td>
<td>
<span id="shortlisted">
@Html.EditorFor(modelItem => item.IsShortlisted, "NullBool")
</span>
</td>
<td>
@if (string.IsNullOrEmpty(item.Applicant.EmailAddress))
{
@Html.CheckBox("EmailAddress", false, new { @class = "form-control", @disabled = "disabled" });
}
else
{
@Html.CheckBox("EmailAddress", true, new { @class = "form-control", @disabled = "disabled" });
}
</td>
</tr>
}
</tbody>
</table>
<div class="center-block form-group">
<div class="text-center">
<div class="button-container">
<input type="submit" name="PrintRegret" value="Print Regret" class="btn btn-danger" />
<input type="submit" name="Save" value="Save" class="btn btn-primary" />
<input type="submit" name="EmailRegret" value="Email Regret" class="btn btn-danger" />
</div>
<br />
@Html.ActionLink("Print Applicants for Shortlisting", "PrintApplicantsForShortlisting", "VacancyApplicant", new { VacancyId = Model.First().Vacancy.VacancyId }, new { @class = "btn btn-success" })
@Html.ActionLink("Email Applicants for Shortlisting", "EmailApplicantsForShortlisting", "VacancyApplicant", new { VacancyId = Model.First().Vacancy.VacancyId }, new { @class = "btn btn-success" })
<br /><br />
@Html.ActionLink("Shortlist By File", "AutoShortlist", "Interview", new { vacancyId = Model.First().Vacancy.VacancyId }, null)<br />
@Html.ActionLink("Interviews", "InterviewsByVacancy", "Interview", new { VacancyId = Model.First().Vacancy.VacancyId }, null)
</div>
</div>
}
Мой Jquery является
$("#datereplied :input").on("change", function() {
if ($(this).val() != "") {
console.log("replied not disabled");
$("#shortlisted :input").prop("disabled", false);
} else {
console.log("replied disabled");
$("#shortlisted :input").prop("disabled", "disabled");
}
})
$("#datenotified :input").on("change", function() {
if ($(this).val() != "") {
console.log("notified not disabled");
$("#shortlisted :input").prop("disabled", false);
} else {
console.log("notified disabled");
$("#shortlisted :input").prop("disabled", "disabled");
}
})
Как вы можете видеть, я использую оболочку, чтобы отключить isshortlisted список опций. Это только когда-либо влияет на первый на странице.
веселит за любую помощь
Помимо дубликата' id' выпуска (см BENG Ответит), ваш код означает, что вы не можете выполнить привязку к модели, когда отправьте форму - см. [этот ответ] (http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943), и как только вы получите это, ваш '@Html .CheckBox ("EmailAddress") 'будет ** всегда ** post back false –
Почему вы удалили весь код в своем вопросе? (Я отменил изменения) –