2016-04-29 2 views
1

Итак, мой код ниже. Мне нужно отключить редактор 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 список опций. Это только когда-либо влияет на первый на странице.

веселит за любую помощь

+0

Помимо дубликата' id' выпуска (см BENG Ответит), ваш код означает, что вы не можете выполнить привязку к модели, когда отправьте форму - см. [этот ответ] (http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943), и как только вы получите это, ваш '@Html .CheckBox ("EmailAddress") 'будет ** всегда ** post back false –

+0

Почему вы удалили весь код в своем вопросе? (Я отменил изменения) –

ответ

2

id должен быть уникальным.

Измените все id «s в foreach к классам, а затем использовать: -

$(this).closest('tr').find(".shortlisted :input").prop("disabled", false); 
Смежные вопросы