2013-08-01 3 views
0

입력 요소 (입력 숨기기 및 사용자 정의 선행 제안을 제외한 모든 항목 표시)를 클릭하면 특정 '확대/확대'효과로 phonegap에 응용 프로그램을 작성하고 있습니다. 뷰는 backbone.js를 사용하여 작성하고 난 초점의 '확대 된'모드로 전환하고 있습니다 :좁은 요소의 끝 부분으로 이동

events: { 
      'focus .search': 'startSearch', 
} 

을 내 startSearch 방법은 내가 zoom-in 효과를 immitate를 위해 모든 논리를하고 있어요.

_moveCursorToEnd: function(element) { 
     var val_len = element.value.length; 
     element.scrollLeft = val_len * 9; 
     setTimeout(function() { 
      element.selectionStart = val_len; 
     }, 1); 
    }, 

    startSearch: function() { 
     window.navbar.hide(); 
     this.$input.addClass('search-input-small'); 
     this.$cancel.show(); 

     var el = this.$input[0]; 
     this._moveCursorToEnd(el); 

    }, 

search-input-small은 입력을 더 작게 만듭니다.

setTimeout_moveCursorToEnd 인 경우 효과가 없으므로 필요합니다. 문제는 setTimeout이 1msec 임에도 불구하고 불편한 커서 이동의 두 번째 원인 인 것 같습니다.

추한 지연없이 Safari Mobile 6 (iOS 6 이상)에서 작동하는 끝까지 커서를 옮길 방법이 있습니까?

답변

0

focus에서 click으로 이벤트를 변경하고 위에 언급 한 것과 유사한 코드를 사용하여 작동하도록했습니다. 텍스트 편집에 중점을 둔 클릭의 선택이 처리기 focus 이후에 적용되고 click 처리기 전에 적용됩니다.