2014-12-24 5 views
0

이 내 코드 때 포커스를 제거 :입력 잃거나 이온에서 열린 소프트 키보드와 각도 JS

<ion-view> 
    <ion-content class="login_bg"> 
     <div class="login_logo"><img src="img/login_logo.png" alt=""></div> 
      <div class="register_page"> 
       <input type="email" name="name" placeholder="Email" ng-model="login_info.forgetmail" ng-enter="forgetPassword()" /> 
      <div class="clearfix"> 
       <a class="signup" ng-click="forgetPassword()">Submit</a> 
      </div> 
     </div> 
    </ion-content> 
</ion-view> 

문제 : 입력 필드에 입력 소프트 키보드가 열리고가에서 초점을 제거 할 때 입력 필드. 입력 필드를 다시 입력해야합니다. 이 문제에 대해 도와주세요. 나는 시도했지만 이것에 대한 정확한 대답을 찾을 수 없습니다 ..

+0

Hello Davin 당신은이 문제에 대한 해결책이 있습니까? 나는 이것을 위해 많은 노력을했지만 해결책을 찾지 못했습니다. –

답변

0

나는 조금 늦다는 것을 알고 있지만, 지금은 내 자신의 문제를 해결하기 위해 이걸 발견했습니다.

나는이이 문제 (당신이 당신의 input 태그에 id="email"를 추가 할 필요가) 해결 해요 : 당신이 input 클릭하면

var email = document.getElementById("email"); 
angular.element(window).on('resize', function(event){ 
    var touched = angular.element(email).hasClass('ng-touched'); 
    if (!touched) { 
     event.preventDefault(); 
    } 
}); 

은, 그건 resize 이벤트를 트리거 소프트 keywoard를 발생하고이다 이 resize 이벤트는 input (실제로는 전체 window 오브젝트의 초점을 훔칩니다) 이벤트를 훔칩니다.

window에 대한 resize 이벤트가 발생하면 기본 동작을 방지하여 포커스를 도용하지 못하게합니다. input에 클래스 ng-touched이있는 경우 고려해야합니다. 이는 소프트 키보드가 열리고 닫히는 때마다 preventDefault()이 실행되는 것을 방지하기 때문입니다. 실제로이 상태에서 preventDefault()은 소프트 키보드가 처음 시작될 때만 발생합니다. 그러나 이것은 충분하다고 보입니다. input은 소프트 키보드가 나타나면 다시 초점을 잃지 않을 것입니다.

Android, Android 스톡, Lightning 및 Chrome 용 Firefox에서이 기능을 사용해 보았습니다.

만약 당신이 여전히이 문제를 겪고 있다면, 이것이 당신이나 @parvindra에게 도움이되기를 바랍니다.

재미있는 점은 언급 한 번개 (Android 용 경량 브라우저)이이 성가신 동작의 영향을받지 않는다는 것입니다. 그것은 밖으로 작동합니다.

관련 문제