2013-08-19 2 views
0

아래의 간소화 된 HTML 코드에는 2 개의 중첩 클릭 이벤트 (href 및 입력)가 포함되어 있습니다. 사용자가 입력 필드를 클릭하면 href에 링크 된 SelectTable() 자바 스크립트 함수도 트리거됩니다. 이는 목적이 아닙니다. 이것을 피하는 방법?중첩 클릭 이벤트가 필요에 따라 작동하지 않습니다.

미리 도움을 주셔서 감사합니다.

코드 :

<a href="javascript:SelectTable();"> 
<table id="tableproduct1" class="notselectedElement"> 
    <tr> 
     <td> Number of elements: <input type="text" name="nrofelements"> </td> 
    </tr> 
</table> 
</a> 
+3

이것은 당신이 이벤트 리스너를 추가하는 방법이 아니다. ['addEventListener'] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener)를 보거나 _onclick_ 속성/속성을 사용하십시오. –

+2

앵커의 자식으로서의 테이블. – j08691

답변

0

봅니다 eventListener를 사용하여이 작업을 수행 할 수 있습니다.

내가 게시 한 코드를 기반으로 샘플을 제공 할 수 있습니다.

var aTag = document.getElementsByTagName("a"); 
aTag .addEventListener("click", aTagFn, false); 
var iTag = document.getElementsByTagName("input"); 
iTag.addEventListener("click", inputTagFn, false); 


업데이트 : 내가 해결 방법을 만든 간단한 부울 변수를 사용하여 유사한 jsfiddle1, 당신이 직면하고있는 문제,

을 만들었습니다

.

isclicked = true; 

function a() { 
    if (isclicked) { 
     alert("a tag is clicked"); 
    } 
    isclicked = true; 
} 

function b() { 
    alert("input tag is clicked"); 
    isclicked = false; 
} 

확인이 JSFiddle2

+0

입력 할 때마다 thnx (!) ps @ user1671639 : 링크 http://jsfiddle.net/hfpCY/1/의 javacode가이 사이트와 다릅니다. 질문 : 더 많은 'a'와 '입력'을 사용하여 코드에서와 같이 테이블을 더 많이 보유하고 있다면 여전히 bool 변수 하나가 필요합니다 (isclicked)? – Joppo

+0

@ user2543182 모든 링크와 입력에 대해 동일한 기능인 경우에만 정확합니다. 그렇지 않으면 내 예제와 비슷한 여러 개의 isclicked가 있어야합니다. – Praveen

+1

그것은 여러 테이블, 함수 및 isclicked vars와 함께 작동했습니다, thnx! 단순성 때문에이 해결 방법을 선택합니다. – Joppo

관련 문제