2012-08-10 6 views
39

모바일 뱅킹 애플리케이션을 개발 중이며 통화 금액 입력을 실시간으로 형식화하는 데 관심이 있습니다.자바 스크립트 캐럿 위치

나는 이미 autoNumeric pluginjQuery Format Currency Plugin을 테스트했지만 둘 다 Android 2. * 브라우저에서 커서 위치 문제가 있습니다.

누구든지이 브라우저와 호환되는 JavaScript 솔루션을 보유하고 있습니까?

+1

숫자 마스크로 어려움을 겪은 후 모바일 브라우저에서 해당 마스크를 비활성화해야했습니다. 내가 아는 한 해결 방법은 없습니다. – devundef

+0

이 버전의 Android 브라우저는'obj.selectionStart' 및'obj.selectionEnd'를 제대로 지원하지 않습니까? – scunliffe

+1

이미 jQuery를 사용하고 계시다면 jQuery ++를 사용해 보셨습니까? (저는 최근에 탭을 캡쳐하고 키를 누른 후 올바른 캐럿 위치 배치에 사용했습니다)? 내가 시험 할 때 위대한 작품. 그럼에도 불구하고 항상 Range 및 Selection 메서드를 사용할 수 있습니다 (jQuery가 필요 없음). jquerypp.com –

답변

1

저는 autoNumeric에 대해 모르지만, http://code.google.com/p/jquery-formatcurrency/은 꽤 좋아 보입니다. 게시 한 jsFiddle 예제는 내 데스크톱 브라우저에 캐럿을 올바르게 배치하지 않지만 내 (Jellybean) Android 휴대 전화에도 올바르게 적용됩니다. (진저 브레드에서 커서가 깜빡 줄이 줄의 끝으로 이동 수도 있지만, 마지막으로 위치를 계속 편집됩니다.) 자신의 데모를보십시오 : http://www.bendewey.com/code/formatcurrency/demo/format_as_you_type.html

+0

이 플러그인은 Andoid 2. * 브라우저에서 커서 위치 문제가 있습니다. –

-1

그것은이 jQuery 플러그인 보인다 - NumBox을 - 솔루션을 제공하는 것을 목표로 너의 문제에.

+0

이 플러그인 –

1

나는 일반적으로 당신이 그것을 사용하기 매우 쉽게 http://openexchangerates.github.io/accounting.js/#download

에서 다운로드 할 수 있습니다 accounting.js 사용합니다. 같은 다운로드 페이지에서 어떻게 작동하는지 확인할 수 있습니다.

 function formatMoney(myField){ 
      if(myField.selectionStart || myField.selectionStart == '0'){ 
       var len = myField.value.length; 
       var caretPos = doGetCaretPosition(myField); 
       myField.value = accounting.formatMoney(myField.value); 
       var newlen = myField.value.length; 
       setCaretPosition(myField, newlen != len ? (newlen > len ? caretPos + 1 : caretPos - 1) : caretPos); 
      } 
     } 
     function doGetCaretPosition (ctrl) { 

      var CaretPos = 0; 
      // IE Support 
      if (document.selection) { 

       ctrl.focus(); 
       var Sel = document.selection.createRange(); 

       Sel.moveStart ('character', -ctrl.value.length); 

       CaretPos = Sel.text.length; 
      } 
      // Firefox support 
      else if (ctrl.selectionStart || ctrl.selectionStart == '0') 
       CaretPos = ctrl.selectionStart; 

      return (CaretPos); 

     } 
     function setCaretPosition(elem, caretPos) { 
      elem.value = elem.value; 
      if(elem != null) { 
       if(elem.createTextRange) { 
        var range = elem.createTextRange(); 
        range.move('character', caretPos); 
        range.select(); 
       } 
       else { 
        if(elem.selectionStart) { 
         elem.focus(); 
         elem.setSelectionRange(caretPos, caretPos); 
        } 
        else 
         elem.focus(); 
       } 
      } 
     } 

당신은 같이 텍스트 필드 기능을 사용할 수 있습니다 :

<input id="myField" type="text" onkeyup="formatMoney(this);" onChange="formatMoney(this);" onBlur="formatMoney(this);" /> 

가 점점 설정 캐럿

나는 내가 커서 관리 작업을 수행하는 데 사용하는 몇 자바 스크립트 기능을 생성 위치 함수는 여기에서 가져 왔습니다. Set keyboard caret position in html textbox

Android 2.1 에뮬레이터에서 테스트했습니다. 에뮬레이터가 느리지 만 작동하는 것처럼 보였습니다. 당신은 여기에 스크린 샷을 찾을 수 있습니다 https://www.dropbox.com/s/9ximuwh64kadiea/shot.JPG?dl=0

+0

나는 안드로이드 2.3.6 장치에서이 솔루션을 테스트했지만 불행히도 캐럿 위치의 문제가 남아 있습니다. –

0

여기에 오픈 소스, 잘 기여 잘 최선을 다하고 라이브러리 : https://github.com/plentz/jquery-maskmoney

그것은에 당신의 필요에 응답하지 않는 것 같다? Havent't는 Android에서도 테스트했습니다.

+0

불행히도 거기에있는 것 같습니다 몇 가지 안드로이드 문제 : https://github.com/plentz/jquery-maskmoney/issues?utf8=%E2%9C%93&q=android –

+1

나쁘다. 다음 번에 문제를 점검 할 것입니다. –