2016-11-14 2 views
1

iPad 용 앱을 개발 중입니다. (내부 앱이므로 iPad 용이며 다른 기기 용이 아닙니다.)입력을 클릭 해제하는 방법은 무엇입니까?

앱의 1 페이지에 2 페이지 링크가 있습니다. 그러나 독립형 모드로 유지해야하기 때문에 링크의 기본 클릭 동작을 차단하고 대신 location 개체를 변경했습니다. 페이지 2는 내가 방금 클릭 한 링크와 정확히 동일한 좌표에서 텍스트 입력이 발생합니다. 링크에서 클릭 비헤이비어를 비활성화했지만 click 이벤트는 링크가 있던 입력에서 실행 중입니다. (이는 touchend의 발사 및 click의 발사 사이의 지연이다.) I는 입력의 클릭에 모두 event.preventDefault()event.stopPropagation()을 시도하지만, 클릭 이벤트가 아직 발사 및 아이 패드의 키보드를 여는

.

아이디어를 어떻게 중지 하시겠습니까? 감사.

편집 : 입력은 사용자가 의도적으로 포커스를 둡니다 때 (그리고 나는 이러한 목표를 달성하기 위해 touchend 이벤트를 사용합니다) 작업을 필요로 readonly 또는 disabled에 입력을 설정하면, 그러면 옵션이 아니다.

문제는 첫 번째 페이지에서 사용자가 링크를 터치하여 touchendclick 이벤트를 발생시키는 것입니다. touchendlocation.pathname으로 변경되고 두 번째 페이지가로드 된 후에 click 이벤트가 시작됩니다. 두 번째 페이지에는 click 이벤트가 발생한 동일한 좌표에 텍스트 필드가 있으므로 event.targetinput이되어이 이벤트를 사용하지 않도록 설정하려는 모든 시도가 실패했습니다.

+0

기본값을 방해하고 자체를 제거하는 클릭 수신기 내부에 touchend 이벤트 수신기를 설정할 수 있습니다. 이렇게하면 첫 번째 클릭 만 취소됩니다. –

+0

고마워요. - 해결책이 아니었지만 올바른 방향으로 나를 지적했습니다. 'touchend'에'location.pathname'을 변경하고 폼에 대한 클릭이 트리거되지 않게하는 메소드에'event.stopPropagation'과'event.preventDefault'를 추가했습니다. –

답변

-1

입력을 읽기 전용으로 설정하려고 했습니까?

+0

나는 읽기 전용이되고 싶지 않다. 합법적 인 의견입니다. 사용자가 적극적으로 클릭 할 때 입력이 포커스를 얻고 키보드를 표시하기를 원합니다 (이 경우 나중에 터치 이벤트를 사용합니다). 그러나 입력이 뷰를 변경하기 위해 링크를 누를 때 손가락이 있었던 동일한 좌표에 있기 때문에 입력이 포커스를 얻는 것을 원하지 않습니다. –

+0

@DerekHenderson은 이러한 세부 사항을 질문으로 이동합니다. 그것은 사람들이 당신의 후유증을 더 잘 이해하는 데 도움이 될 수 있습니다. –

+0

그 유일한 입력? 그게 사실이라면 케이스가 즉시 초점을 맞추고 키보드가 나타납니다. (더 나은 UX 용 모바일/태블릿) –

0

Page 1에서 Page 2로 전환 할 때 스피너가있는 창을 오버레이합니다. 250-300ms의 지연 시간은 사용자가 화면에서 발을 떼기에 충분한 시간 이상이어야합니다.

+0

만약 내가이 옵션을 사용하려고한다면, 나는 입력을'readonly'로 설정하고, 약 200ms 후에'readonly' 속성을 제거하기위한 타임 아웃을 설정하십시오. 그러나 클릭 이벤트를 방지/취소/비활성화하는 방법에 대한 질문에는 대답하지 않습니다. –

관련 문제