2014-03-28 1 views
1

아래에 표시된 검도 MaskedTextBox가 있습니다. 기본적으로 00을 허용하지 않습니다 MM/DD/YYYY하지만 동시에 나는 그것을 원하는 MM/DD 부분에 대해 :검도 MaskedTextBox에서만 유효한 날짜를 허용하는 방법

@(Html.Kendo().MaskedTextBox() 
    .Name("kendoMaskedTextBox1") 
    .Rules(rules => 
    { 
     rules.Add('0', "/[0]{1}[1]{1}/"); 
    }) 
    .Mask("00/00/0000") 
) 

내 질문은의 형식을 가질 수 있도록 내가 규칙을 추가 할 수있는 방법입니다 첫 번째 값이 0이면 MM에 대해 0을, 다음 값이 0이면 다음 값은 1-9가 될 수 있습니다. 다음 값은 1-9 등일 수 있지만 YYYY에 대해서는 000을 허용하려고합니다. 0000.

다른 사람이 나 자신을 시도 할 수 있도록 누군가가 내가이 작업을 시작하도록 도울 수 있습니까? 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12 :

MM은 하나의 값이어야한다 : 여기

내가 더 명확 측면에서 필요하다

답변

2

조각별로 조각내어보세요. 먼저 가장 쉬운 제한 시작 월 : 년 후

0[1-9]|[12][0-9]|3[01] 

그리고 :

0[1-9]|1[0-2] 

그런 다음 하루에 이동

(?!.*0000$)\d{4} 

그리고 마지막으로 하나에 모두 결합 규정 :

^(?:0[1-9]|1[0-2])(?:0[1-9]|[12][0-9]|3[01])(?:(?!.*0000$)\d{4})$ 

02/31/2002와 같이 유효하지 않은 날짜를 계속 입력 할 수 있으며 날짜의 유효성을 검사하는 유일한 방법은 프로그래밍 방식으로 입력 문자열에서 Date 개체를 만들고 테스트하는 것이 올바른지 테스트하는 것입니다.

+0

'rules.Add ('0', "/ 0 [1-9] /");'시도했지만 텍스트 상자에 입력을 전혀 허용하지 않습니다. (이것은 한 달입니다.) – JohnAtrik

0

MaskedTextBox에서 RegEx는 규칙에서 허용되는 단일 문자 집합이어야합니다. 귀하의 경우 마스크의 "0"을 두 개의 문자/0 [1-9] | 1 [0-2] /로 나타내려고합니다. 각 자릿수에 대해 별도의 규칙을 만들 수도 있지만 월별로 00과 19가 허용됩니다.

두 자로 된 코드 "JJ"에 대한 규칙을 설정했지만 그 중 하나도 작동하지 않았습니다. 또한 MaskedTextBox와 DatePicker를 같은 입력에 사용하여 별의 결과보다 적게 사용하려고했습니다.

일련의 키 확인을 수행하고 조각이 올바른지 확인하고 "수정"할 수 있습니다. 나는 그러한 종류의 UI가 실망 스럽다는 것을 안다. 그리고 가능한 모든 순열을 붙잡거나 허락하는 것이 많은 일이 될 것이다.

테너브가 맞다고 생각합니다. 두 컨트롤 중 하나를 사용하는 것이 필드의 데이터가 적절한 날짜인지 확인하는 유효성 검사 (블러 또는 값 사용 이전)를 사용하는 것이 가장 좋습니다.

+0

새로운 답변이 아니라 주석 인 것 같습니다. 이 생각을 의견으로 바꾸지 않거나, 개선 할 수 있다고 생각한다면 tenub의 대답을 편집 해 보는 것이 어떻습니까? – Anson

관련 문제