2016-10-02 4 views
-4

필자는 포커스를 얻을 때 지워지는 전형적인 입력의 경우가 있습니다.자바 스크립트 : 창이 초점을 맞출 때 입력에 초점을 맞추지 못하게하는 방법은 무엇입니까?

문제는 사용자가 스프레드 시트에서 일부 데이터를 복사하려고 할 때입니다. 이 데이터를 입력에 추가하면 입력의 포커스 이벤트가 트리거되고 입력 한 내용이 지워집니다.

브라우저 창의 포커스으로 인해 onfocus가 트리거되는 것을 방지하고 입력, 탭, 레이블 클릭 또는 페이지의 기존 동작을 클릭하지 않으려면 어떻게해야합니까?

아니요 제발 제발.

편집 : 분명히 어떤 사람들은 게시물에 몇 가지 코드가 없을 때마다 부정적 투표를하고 싶어합니다. 이 간단한 아이디어를 파악하기 위해 코드를 필요로한다면, 여기있다 :

<input type=text onfocus="this.value=''"> 
+2

왜 데이터가 초점을 취소? – adeneo

+0

코드는 어디에 있습니까? – j08691

+0

누구나 볼 수없는 코드에서 동작을 수정하는 방법은 무엇입니까? [mcve] – charlietfl

답변

1

기술적으로, 창을 전환하면 요소가 포커스를 회복/잃게한다. 물론 이것은 focus 이벤트 핸들러를 트리거합니다. 포커스 이벤트를 발생시킨 원인을 구별 할 수있는 방법이 없습니다.

당신이 수동으로 선택되어있을 때만 필드를 삭제하려면

는 대신 click 이벤트를 사용 : 페이지가 포커스를 잃을 경우

<input type=text onclick="this.value=''"> 

당신은 감지 할 수 있습니다. 초점을 다시 얻었을 때 input을 지워야하는지 여부를 추측 할 수 있습니다. 이벤트 순서가 중요한지 또는 관련된 브라우저에 따라 이벤트 순서가 다른지 확실하지 않습니다.

<input type=text> 
donotclear = false; 

addEventListener('blur',function(e){ 
    donotclear = true; 
}); 

document.getElementsByTagName('input')[0].addEventListener('focus',function(e){ 
    if(donotclear) { 
    donotclear = false; 
    } else { 
    this.value = ''; 
    } 
}); 
+0

앞에서 언급했듯이, onclick은 많은 문제를 야기합니다. 1. 입력은 탭 또는 레이블로 선택 될 수 있습니다. 2.커서를 재배치하는 것도 한 번의 클릭입니다. – FlorianB

+0

@FlorianB 업데이트 됨 – Ouroborus

+0

감사합니다. 그 해결책에 대해 생각했습니다. 아마도 가장 덜러운 것일 것입니다. :) 입력이 포커스를 얻었을 때 donotclear = false로 설정할 생각이 맘에 들어요. 우리가 언제 돌아올 지 감지하지 않으려 고합니다. 창을 닫은 다음 시간 초과로 설정 ... – FlorianB

관련 문제