2014-04-30 2 views
3

jQuery에서 새롭게 변경되었습니다. jQuery 버전 1.8.3을 사용하고 있습니다. 내 ASP.NET 웹 응용 프로그램에서 jQuery 유효성 검사 엔진을 사용하여 날짜를 확인합니다. 나는 사용자가 dd/mm/yyyy 형식으로 만 날짜를 입력 할 수있는 HTML 텍스트 입력을 동적으로 생성하고 있습니다. 여기에서는 과거와 미래의 유효성 검사기를 모두 texbox에 할당하고 있습니다. 과거와 미래의 유효성 검사기를 사용하여 dd/mm/yyyy 형식으로 날짜를 확인하고 싶습니다. 사용자가 과거와 미래에 주어진 값 사이의 날짜 만 입력하도록 허용해야합니다. 그리고 사용자가 주어진 제한을 넘어서 날짜를 입력하면 dd/mm/yyyy 형식으로 메시지에 날짜가 표시됩니다.jQuery 유효성 검사 엔진, dd/mm/yyyy 형식으로 과거 및 미래 날짜 유효성 검사

하지만 어떻게됩니까? yyyy-mm-dd 형식으로 날짜를 전달할 때만 과거 및 미래 날짜 유효성 검사기 유효성을 검사하고 yyyy-mm-dd 형식으로 텍스트 상자에 날짜를 입력해야합니다.

jquery.validationEngine-en.js에서
HtmlGenericControl l_oHGC = new HtmlGenericControl("div"); 
divCustomFields.Controls.Add(l_oHGC); 
TextBox l_oTXT = new TextBox(); 
l_oHGC.Controls.Add(l_oTXT); 
l_oTXT.Text = Convert.ToDateTime("Apr 16 2014 12:00AM").ToString(gc.APP_DATEFORMAT_DD_MM_YYYY); 
l_oTXT.MaxLength = 10; 
l_oTXT.CssClass = "calender validate[custom[date],past[" + Convert.ToDateTime("Dec 31 2050 12:00AM").ToString(gc.APP_DATEFORMAT_DD_MM_YYYY) + "],future[" + Convert.ToDateTime("Apr 26 2014 12:00AM").ToString(gc.APP_DATEFORMAT_DD_MM_YYYY) + "]]"; 

내가 다음 않았다가

"past": { 
    "regex": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, 
       "alertText": "* Date prior to " 
     }, 
    "future": { 
    "regex": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, 
       "alertText": "* Date past " 
     }, 
    "date": { 
     "regex": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, 
       "alertText": "* Invalid date, must be in DD/MM/YYYY format" 
     }, 

답변

1

가 짧은 변경 : 이제 다음과 같다까지

모두의 의견을 해봤 무엇

환영합니다 답변 : 할 수 없다 pastfuture 유효성 검사 암탉 날짜는 사용자 지정 형식으로 지정됩니다. 즉시 사용 가능하며 ISO 형식 (YYYY-MM-DD 또는 YYYY/MM/DD)의 날짜 만 지원합니다.

언어 파일 (jquery.validationEngine-en.js)의 변경 사항이 유효성 검사의 날짜 분석에 영향을 미치지 않는다는 것이 나쁜 소식입니다.

/** 
* Parses an ISO date 
* @param {String} d 
*/ 
_parseDate: function(d) { 

    var dateParts = d.split("-"); 
    if(dateParts==d) 
     dateParts = d.split("/"); 
    if(dateParts==d) { 
     dateParts = d.split("."); 
     return new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]); 
    } 
    return new Date(dateParts[0], (dateParts[1] - 1) ,dateParts[2]); 
}, 

는 따라서, 원하는 dd/mm/yyyy 대신 YYYY/MM/DD 형식을 사용하거나 대신 자신의 구문 분석 방법을 작성 중 하나가 :

이유는 ISO 형식이 jquery.validationEngine.js 다음과 같은 방법으로 하드 코딩되어있다 귀하의 요구에 맞는 _parseDate

두 번째 방법을 선호하는 경우 여기 나쁜 소식 번호 2가 있습니다. 자신의 JS을 통해이 동작을 무시하는 데 사용할 수있는 확장 점이 없습니다. 그러므로 jquery.validationEngine.js을 직접 수정해야하며 나중에 jQuery.validationEngine 플러그인을 업데이트 할 때 변경 사항을 덮어 쓰지 않도록하십시오.

+0

@Rahul : 내 대답이 도움이 되었습니까? 그렇다면 그것을 받아들이거나 upvote하거나 약간의 의견을 제공하는 것이 자유 로움. 그렇지 않으면,이 스레드는 다른 독자에게 버려지고 쓸모 없게 보입니다. 고맙습니다! –

관련 문제