2012-01-19 2 views
0

날짜 필드와 클라이언트 측 유효성 검사가 활성화 된 간단한 MVC3 양식이 있습니다 (jquery.validate/jquery.validate.unobtrusive). 문서 당 날짜 필드에 datepicker (jQuery UI)를 첨부하는 코드를 추가했습니다. 그러나 datepicker가 제출 단추를 클릭하기 전에 클릭 한 날짜 필드가 유효하지 않으면 마지막으로 해당 필드의 datepicker가 자동으로 표시됩니다. 나는 이것을 원하지 않는다. 어떻게 비활성화 할 수 있습니까?jQuery validate plugin with datepicker - 유효하지 않은 날짜로 인해 datepicker 팝업이 발생합니다.

편집 :

focusInvalid: function() { 
    if(this.settings.focusInvalid) { 
     try { 
      $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []) 
      .filter(":visible") 
      .focus() 
      // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find 
      .trigger("focusin"); 
     } catch(e) { 
      // ignore IE throwing errors when focusing hidden elements 
     } 
    } 
}, 

: 그것은 수동으로 아래 focusInvalid() 함수를 사용하여 마지막 활성 입력 컨트롤에 초점을 시도처럼

검증 플러그인에 대한 코드를 검토 한 후, 그것은 본다 이 문제를 처리하기위한 2 가지 옵션이있는 것으로 보입니다. 하나는 유효성 검사기 자체의 focusInvalid 설정을 false로 설정하는 것입니다. 필자는 폼의 FIRST 유효하지 않은 요소에 초점을 맞출 수 있기 때문에 focusInvalid 함수 대신 원숭이 패치를 선택했습니다. 반드시 마지막 활성 요소 일 필요는 없습니다.

$('form').data('validator').focusInvalid = function() { 
    $(this.currentForm).find('.input-validation-error').first().focus(); 
}; 

그러나이 문제에 대한 다른 접근 방법을 듣고 싶습니다. 당신이 그것을 날짜 선택기가 자동으로 표시되지 않습니다 이런 식으로 할 경우 경우 유효성 검사가 실패

showOn: 'button', showButtonPanel: true, buttonImage: '<your image file>', 
      buttonImageOnly: true, 
      buttonText: 'Choose a Date', 

:

답변

1

귀하의 경우 허용되는 경우에만 버튼을 사용하여 다음 날짜 선택기 옵션을 사용하여 날짜 선택기를 보여줄 수 양식을 제출할 때.