2012-12-15 2 views
0

Google 스크립팅을 사용하여 양식을 디자인하고 있습니다. 시간 값을 유지해야하는 두 개의 텍스트 상자가 있는데 입력이 유효한지 확인하려고합니다. 나는 텍스트 상자에 입력을 시작으로Google UI 스크립트 validateMatches가 작동하지 않으며 validateNotMatches가 수행되지 않습니다

function setupTimeValidators(widget) { 
    var timeRe = /(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i; 

    var onValid = (UiApp.getActiveApplication().createClientHandler() 
       .validateMatches(widget, timeRe) 
       .forTargets(widget) 
       .setStyleAttribute("background", "#FFFFFF")); 


    var onInvalid = (UiApp.getActiveApplication().createClientHandler() 
        .validateNotMatches(widget, timeRe) 
        .forTargets(widget) 
        .setStyleAttribute("background", "#FFCCCC")); 

    widget.addKeyUpHandler(onValid); 
    widget.addKeyUpHandler(onInvalid); 
} 

onInvalid 부분은 즉시 텍스트 상자의 배경색을 변경하지만 내가 01:11 pm에 도착하면 그것은 결코 흰색에 다시 변경되지 않습니다. (본인은 값이 테스트했습니다.)

을 내 정규 표현식 작동 확신, 내가 지금처럼 테스트하기 때문에 :

function test() { 
    Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("01:11 pm")); // true 
    Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("00:11 pm")); // false 
    Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("10:11 pm")); // true 
    Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("10:90 pm")); // false 
} 

에 갈 수 있는지 어떤 아이디어가? 감사!

답변

1

당신은 같은 .. 당신이 정규식의 캐릭터 라인 표현을 사용해야합니다 validateMatches 또는 validateNotMatches와 정규식 개체를 사용할 수 없습니다 그것을했다

var timeRe = "(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m"; 
var flags = "i"; 

...

.validateMatches(widget, timeRe, flags) 
+1

을 , 고맙습니다! (문서를 올바르게 읽을 때 도움이됩니다 ...) –

관련 문제