2014-10-18 3 views
0

텍스트 필드 (예 : dob 11/33/1944)에 특정 형식을 적용하려고하는 앱에 양식이 있습니다. 다음 코드는 iPhone에서 잘 작동하지만 Android에서는 첫 번째 숫자를 입력하면 앱이 작동을 멈 춥니 다. 누군가가 코드 수정을 도와서 iPhone과 Android 모두에서 작동하도록 할 수 있습니까? 도와 주셔서 감사합니다.Android 날짜 스크립트 - 티타늄 모바일 앱

나는 형식을 강제하는 코드가있는 global.js라는 파일이 있습니다.

var styles = require('global').Styles; 

그리고 내 분야는 다음과 같다 :

내 양식에
Mask = 
{ 
    mask: function(_field, _function) 
    { 
     _field.value = _function(_field.value); 
    }, 

    dob: function(v) 
    { 
     v = v.replace(/\D/g,""); 
     v = v.replace(/^(\d\d)(\d)/g,"$1/$2"); 
     v = v.replace(/(\d{2})(\d)/,"$1/$2"); 
     return v.slice(0, 10); 
    }, 

    phone: function(v) 
    { 
     v = v.replace(/\D/g,""); 
     v = v.replace(/^(\d\d)(\d)/g,"($1) $2"); 
     v = v.replace(/(\d{4})(\d)/,"$1-$2"); 
     return v.slice(0, 14); 
    } 
}; 

내가이 (가) global.js에 대한보기의의 상단에 다음과 같은 추가 : 이것은 내가 사용하고있는 것입니다

여기
// Create a TextField. 
var aTextField_dob = Ti.UI.createTextField(
{ 
    top : "10%", 
    width : '80%', 
    height:'8%', 
    color: styles.textfield.color, 
    font : 
    { 
     fontSize : font_text 
    }, 
    hintText : 'Date of Birth (Ex.01/01/1999)', 
    paddingLeft : styles.textfield.paddingLeft, 
    backgroundImage : styles.textfielda.backgroundImage, 
}); 

// Listen for return events. 
aTextField_dob.addEventListener('change', function(e) 
{ 
    Mask.mask(aTextField_dob, Mask.dob); 
}); 

내가 안드로이드 장치에 얻는 문제가, 그냥 자신을 반복 유지하고 응용 프로그램을 강제로 중지 할 수있다 :

[WARN] : IInputConnectionWrapper: getCursorCapsMode on inactive InputConnection 

답변

1

우선, 날짜 선택기 컨트롤을 사용하여이 문제를 완전히 피할 수 있습니다. 어쨌든 더 나은 UI/UX가 될 것입니다.

변경 이벤트에서 무한 재귀를 만들 가능성이 있습니다. 초점을 잃을 때까지 기다릴 수없는 경우 blur (손실 된 focus) 이벤트 또는 keypressed 이벤트를 사용하면이를 피할 수 있습니다.

정규식 엔진이 다른지 잘 모르겠습니다. 정규식 출력을 다른 컨트롤에 넣거나 그냥 로그로 남기십시오. 가능한 변경 이벤트 무한 루프에서 분리하여 테스트하십시오.