2012-07-04 4 views
2

나는 사용자 정의 날짜 선택기 jQuery 플러그인이 있습니다. 양식 제출시 날짜 선택 도구는 선택한 날짜의 유효성을 검사하여 날짜가 유효한지 여부를 확인합니다. 그렇지 않은 경우 오류 메시지를 표시하고, 그렇지 않으면 이어야으로 진행하고 양식을 게시하십시오.이벤트 진행 허용

사용자가 처음으로 유효한 날짜를 입력하면 모든 것이 올바르게 작동합니다. 그러나 사용자가 잘못된 날짜를 입력하면 오류 메시지가 나타나고 사용자가 날짜를 수정해도 여전히 양식을 게시하지 않습니다. 그것은 단지 거기에 앉아있다. 여기

양식 이벤트 제출 처리하는 코드의 일부입니다 :

사용자가 유효한 날짜를 입력
 var hiddenInput = $('.custom-date-picker-value'); 
     var form = hiddenInput.closest('form'); 
     $(form).submit(function (e) { 
      selectedMonth = monthSelect.find('option:selected').text(); 
      selectedYear = yearSelect.find('option:selected').text(); 
      selectedDay = daySelect.find('option:selected').text(); 

      $('#dateValidationMessage').html(''); 
      if (selectedMonth == '' || selectedDay == '' || selectedYear == '') { 
       $('#dateValidationMessage').html($('#dateOfBirthRequired').val()); 
       e.preventDefault(); 
      } 
      else { 
       var dateValue = selectedMonth + '/' + selectedDay + '/' + selectedYear; 
       var dob = new Date(dateValue); 
       var modifiedDate = new Date(dob.getFullYear() + 2, dob.getMonth(), dob.getDay()); 
       if (modifiedDate > new Date()) { 
        $('#dateValidationMessage').html($('#AgeGreaterThan').val()); 
        e.preventDefault(); 
       } 
       else { 
        hiddenInput.val(dateValue); 
        console.log('date is valid'); 
       } 
      } 
     }); 

, 내가 콘솔에 추적되고 출력이 "날짜가 유효합니다"라고 볼 수 있지만 어떤 이유로 양식이 제출되지 않습니다.

여기가 어떻게됩니까?

+0

이것이 양식에 대한 유일한 제출 처리자입니까? – Esailija

+0

@Esailija : 네, 이것이 유일한 것입니다. 하지만 폼에서 다른 입력 필드의 유효성을 검사하기 위해 jQuery.validate 라이브러리를 사용하고 있습니다. 그러나 다른 모든 필드가 유효한 경우에도 양식을 게시하지 않습니다. 그래서 jQuery.validate와 다른 필드에 문제가되는 것은 아닙니다. – Kassem

+1

그 라이브러리 [(jQuery.validate)] (http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js)는 양식에 자체 제출 핸들러를 추가합니다. 하나의 핸들러가''날짜가 유효합니다 ''에 도달하면 핸들러가 수행하지 않기 때문에 어떻게 든 폼의 기본 액션을 막을 수 있습니다. – Esailija

답변

-1

시도

이 경우
return true 

, 또한

console.log //returns undefined. 

로 변경할 수 있도록 양식에서 preventDefault 버그가 일부 브라우저에서 이벤트를 제출할 수있다

e.preventDefault() 

to

return false; 
관련 문제