0

부트 스트랩 3, jQuery v1.11.2, jQuery 유효성 검사 v1.13.1 및 Microsoft jQuery Unobtrusive Validation v3.2.2에서 MVC 4를 사용하고 있습니다.자바 스크립트로 클래스를 추가 한 후 Jquery 클라이언트 측 유효성 검사가 작동하지 않습니다.

입력이 2 개인 양식이 있습니다.

HTML :

<div id="home-search-form" class="col-sm-3"> 
    @using (Html.BeginForm("Search", "Cars", FormMethod.Get, new { @class = "search-form", id="search-form" })) 
    { 
     <div class="form-group"> 
      @Html.LabelFor(d => d.SearchParameters.StartDate) 
      @Html.EditorFor(d => d.SearchParameters.StartDate) 
      @Html.ValidationMessageFor(p => p.SearchParameters.StartDate) 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(d => d.SearchParameters.EndDate) 
      @Html.EditorFor(d => d.SearchParameters.EndDate) 
      @Html.ValidationMessageFor(p => p.SearchParameters.EndDate) 
     </div> 

     <button class="btn btn-default">Search</button> 
    } 
</div> 

JS :

$(function() { 
     /* Handle pickup date and return date elements 
     ----------------------------------------------*/ 
     var pickupDateElement = $("#SearchParameters_StartDate"); 
     var returnDateElement = $("#SearchParameters_EndDate"); 

     pickupDateElement.addClass("form-control"); 
     returnDateElement.addClass("form-control"); 

     // set datepickers readonly 
     pickupDateElement.attr('readonly', true); 
     returnDateElement.attr('readonly', true); 

     $.datepicker.setDefaults($.datepicker.regional["he"]); 

     pickupDateElement.datepicker({ 
      minDate: new Date(), 
      defaultDate: new Date(), 
      onClose: function() { 
       var minDate = pickupDateElement.datepicker('getDate'); 
       minDate.setDate(minDate.getDate() + 1); 

       // set as minDate of returnDate 
       returnDateElement.datepicker('option', 'minDate', minDate); 
      } 
     }); 

     returnDateElement.datepicker({ 
      minDate: pickupDateElement.datepicker('getDate') + 1 
     }); 
}); 

내 문제는 그 입력에 대한 클라이언트 측 유효성 검사가 수행되지 않도록 날짜 선택기 등의 사람들을 사용하기 위해서는 나는이 코드를 사용 어떤 이유로 든 작동합니다 ... 주석을 달았을 때 클라이언트 측 유효성 검사가 다시 작동하기 시작했습니다.

 pickupDateElement.addClass("form-control"); 
     returnDateElement.addClass("form-control"); 

     // set datepickers readonly 
     pickupDateElement.attr('readonly', true); 
     returnDateElement.attr('readonly', true); 

왜 그런가? 그리고 어떻게 해결할 수 있습니까? 감사!

+0

:-) 그 대답 해결 방법 ('@ Html.TextBoxFor를 사용하는 {@class = "폼 컨트롤"새로운 D => d.SearchParameters.StartDate, 쉽게이되지 않을까, @ readonly = "readonly"})'jquery가 아닌? 그러나 그것이 문제를 해결할 지 확신 할 수 없습니다. –

+0

클라이언트 측에서 여전히 TextBoxFor ...와 함께 작동하지 않습니다. – user3125999

+0

업데이트 : 'readonly'속성을 추가하는 스크립트 만 주석 처리하더라도 클라이언트 측이 작동합니다. 이 문제는 js의 readonly 속성을 추가 할 때 시작됩니다. – user3125999

답변