2013-06-12 6 views
0

사용자가 값을 편집 할 수있는 HTML 표에 필드가 있습니다. 사용자가 해당 필드의 셀 중 하나를 클릭하면 텍스트 영역이이 셀에 나타나고 사용자가 원하는대로 편집하고 텍스트 영역 외부를 클릭하면 일반 텍스트로 돌아갑니다. 알다시피, 표준적인 것들. 내부를 클릭하면 텍스트 영역이 흐림

textarea editor

이 모든

한 가지를 제외하고, onblur 이벤트 onfocus 및 로 제대로 작동 : I를 Ex : 내가의 특정 부분을 편집 할 ( 내부의 텍스트 영역을 을 클릭하면 두 글자 사이를 클릭하여 텍스트), 블러 이벤트가 여전히 호출되므로 원하는 텍스트 영역을 닫을 수 없습니다.

왜 이벤트가 불려지는지 이해하기 힘듭니다. 이것은 이벤트 전파라는 현상입니까 들었습니까? 이 문제를 해결하려면 어떻게해야합니까?

자바 스크립트

// Create a function that updates a table cell once the textarea loses focus (do not be confused with "losing its Ford Focus") 
function createBlurFunction(cell, textArea, functionName) { 
    return function() { 

     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.onreadystatechange = function() { 

      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 

       var result = JSON.parse(xmlhttp.responseText)[0]; 

       /* Do stuff with AJAX result */ 
      } 
     } 

     // Empty cell 
     cell.innerHTML = ""; 

     // Send AJAX request 
     xmlhttp.open("GET","Some AJAX parameters", true); 
     xmlhttp.send(); 
    } 
} 

// textArea is already defined somewhere else 
textArea.addEventListener('blur', createBlurFunction(cell, textArea, cell.title), false); 

감사 :

여기에 상황에 관련된 내 코드 (약간 밝게)입니다!

편집 1 : 나는 내부를 클릭하면 텍스트 영역이 사라지지 않습니다

내가 (당신이 외부를 클릭하면 사라집니다 그 텍스트 영역) 내 웹 페이지에 다른 곳에서 비슷한 구조를 사용하고, 행동이 다른 그것의.

그러나, 나는 복사/위의 코드에서 붙여 넣기를 사용, 그래서 당신은 시간 제한을 취소 제한 시간에 당신의 포커스 청취자의 흐림 기능을 넣을 수있는 코드 오류 또는 뭔가 ...

+0

문제가 있는지는 잘 모르겠지만 마지막 줄에서 'blur'대신 'onblur' 이벤트에 대한 청취자 시도를 했습니까? –

+0

addEventListener는 이벤트 이름 매개 변수에 "on"이 필요하지 않습니다.) –

+0

내 잘못, 무슨 일이 벌어지고 있는지 파악하려고합니다. 당신은'alert()'또는'console.log()'를 실행했을 때를 체크하기 위해 그 함수에 넣으려고 했습니까? 이런 * 원치 않는 이벤트 발생이 어디서 발생했는지 찾을 수 있습니다. –

답변

1

을 의심 할 수있다 .

var timer; 
function createBlurFunction() { 
    var myFunc = function() { ... } 
    return function() {timer = setTimeout(myFunc(),300);}; 
} 

function myFocusFunction() { 
    clearTimeout(timer); 
    //do stuff 
} 
+0

어떻게 도움이 될지 모르겠습니다./ –

+0

아, 문제가 흐림 현상이 아닙니다. 여전히 텍스트에 초점을 맞추고 있어도 텍스트 영역 내에서 클릭하면 트리거됩니까? 나중에 텍스트 영역에 초점을 맞추지 않으면 텍스트 영역 만 닫힙니다. 미안하지만 내가 당신의 문제를 오해했다면! – Patrick

+0

정확히 그 문제는 아니며, 귀하의 코드를 완전히 이해하고 있는지 확신 할 수 없습니다. 내가 잘못 본 것이 아니라면, 블러가 포커스가 유지되면 취소되는 타이머를 생성한다는 것입니다. –

관련 문제