2011-05-10 4 views
2

버튼이 하나 뿐인 입력 요소가 2 개 있다고 가정 해 보겠습니다. 버튼 하나의 입력 요소에 대해 한 번에 하나는 현재 초점을 맞추고 있지만 각 요소의 포커스 상태를 캡처하는 방법을 모르겠다.자바 스크립트 : 다른 텍스트 입력에 동일한 버튼을 사용하는 방법은 무엇입니까?

<head> 
<script type="text/javascript"> 
var id_box = document.createElement('input'); 
id_box.id = 'id_box'; 
id_box.type = 'text'; 
div.appendChild(id_box); 

var weight_box = document.createElement('input'); 
weight_box.id = 'weight_box'; 
weight_box.type = 'text'; 
div.appendChild(weight_box); 

function showLetter() { 
    if (id_box is being focused){ 
     document.getElementById('id_box').value = 'ABC'; 
    } 
    if (weight_box is being focused){ 
     document.getElementById('weight_box').value = 'ABC'; 
    } 
} 
</script> 
</head> 

<body> 
    <button onclick="showLetter()">ABC</button> 
</body> 

어떤 생각 :

이 예제를 고려하시기 바랍니다? 고맙습니다.

+0

두 번째 경우에 getElementById ("weight_box")'...를 사용한다고 가정합니다. ... – 6502

+0

@ 6502 제 코드를 수정 해 주셔서 감사합니다. – Protocole

답변

1

입력에 포커스가 있고 사용자가 버튼을 클릭하면 입력이 즉시 포커스를 잃어서 원하는 입력에 포커스가있는 것을 감지 할 수 없습니다.

onFocus 이벤트의 각 입력에 이벤트 처리기를 연결하여 "현재"입력을 저장하는 변수를 만들 수 있습니다. jsFiddle에

데모 : http://jsfiddle.net/P58sx/1/

var current_input; 

function showLetter() { 
    current_input.value = 'ABC'; 
} 

function setCurrentInput() { 
    console.log(this); 
    current_input = this; 
} 

var id_box = document.createElement('input'); 
id_box.id = 'id_box'; 
id_box.type = 'text'; 
id_box.addEventListener("focus", setCurrentInput); 
div.appendChild(id_box); 

var weight_box = document.createElement('input'); 
weight_box.id = 'weight_box'; 
weight_box.type = 'text'; 
weight_box.addEventListener("focus", setCurrentInput); 
div.appendChild(weight_box); 
+0

이것은 나를 위해 작동하지 않습니다. IE를 사용하고 있기 때문에 추측하고 있습니다. (선택이 아니라 ...) 올바른 개념입니다. – Kendrick

+0

방금 ​​Chrome에서만 작동하지만 Firefox에서는 작동하지 않습니다. Firefox 또는 다른 브라우저에서 작동하도록하는 또 다른 방법이 있습니까? – Protocole

0

은 내가 onFocus 이벤트 핸들러를 시도하는 것이 좋습니다.

+0

어떤 방법으로 추천 하시겠습니까? – jessegavin

2

버튼을 클릭하면 텍스트 필드가 포커스를 잃게됩니다. 각 텍스트 상자에 대해 OnFocus 메서드를 트 랩핑하고 텍스트 필드의 인스턴스에 변수를 설정하십시오. 이렇게하면 최신 텍스트 필드가 생기고 if 문이 필요하지 않습니다.

+0

예를 들어 주시겠습니까? – Protocole

0

하나의 트릭은 변수를 선언하고 각 필드의 onFocus 이벤트에 설정하는 것입니다. 그런 다음 버튼 코드에서 버튼을 클릭하기 전에 마지막으로 초점을 맞춘 필드가 무엇인지 확인할 수 있습니다.