2010-06-15 6 views
2

잘하면이 간단한 질문입니다! jQuery에서 코드를 제출하여 제출할 페이지의 특정 양식을 청취하고있을 때 경고를 실행합니다. 예 : 양식 자체에 ID가 없으므로 특정 양식 내에서 양식을 타겟팅하고 있습니다. DIV ID.양식 제출시 기능 수행

$("#content form").submit(function() { 
    alert("lorem ipsum dolor?"); 
}); 

jquery를 사용하지 않고 자바 스크립트에서만 이것을 수행하는 구문은 무엇입니까? 예를 들어,이 코드는 아래에 있으며 작업을 수행하기 위해 양식을 수신하는 방법을 잘 모르겠습니다.

고마워요!

답변

4

가 아니라 파괴적인 방법은, 그것은 코드의 비트 취하면 getElementsByTagNameNodeList을 반환하는 것으로 알려져해야한다, 모든

var submitform = document.getElementById("content").getElementsByTagName("form")[0], 
    callback = function(){ 
     alert("lorem ipsum dolor?"); 
    }; 


if(window.addEventListener){ 
    submitform.addEventListener("submit", callback, false); // Most modern browsers 
} else if (window.attachEvent){ 
    submitform.attachEvent("onsubmit", callback); // IE 
} else { 
    submitform.onsubmit = callback; // Destroys other handlers 
} 
+2

jQuery 버전에서 제공하는 추가 기능은 이미이 이벤트에 대한 다른 바인딩이있는 경우 올바른 작업을 수행하기 때문에보다 낫습니다. 내가 준 코드 (그리고 Marcel이 준 코드)는 다른 바인딩을 덮어 씁니다. Doug의 코드는 jQuery와 마찬가지로 이미 존재하는 바인딩에 새로운 바인딩을 추가합니다. (때로는 물론 코드가 해당 이벤트의 유일한 이벤트 처리기라는 것을 알고 있거나 기존 이벤트 처리기를 바꾸려고합니다.) –

+0

[다소 오래된 기사] (http : //dev.opera .com/articles/view/event-capture-described /), Opera는 이벤트 캡처에 문제가 있습니다. 대신, 오히려 버블 링을 사용해야합니다. 이 기사에서는 세 번째 매개 변수를 'false'로 설정하도록 제안합니다. –

+0

@Marcel 그 정보를 주셔서 감사합니다, 나는 거짓으로 변경 내 대답을 업데이 트했습니다! –

1
submitform.onSubmit = function() { 
    alert("lorem ipsum dolor?"); 
} 
+0

최종 세미콜론을 추가하는 것을 잊지 마십시오. 더욱이, OP의 질문에서,'getElementsByTagName'는 당신이 이벤트 핸들러를 붙일 수있는 폼 엘리먼트가 아닌 폼 엘리먼트의 배열을 리턴합니다. –

0

onsubmit 처리기를 사용할 수 있습니다. 크로스 브라우저에서 그것을 할 수

1

첫째, 당신은을 얻을 필요 첫 번째 DOM 요소, 예를 들면 :

submitForm.onsubmit = function() { 
    alert("lorem ipsum dolor?"); 
}; 
:

var submitForm = document.getElementById("content") 
         .getElementsByTagName("form")[0]; 

그런 다음 당신은 submit 이벤트를 바인딩 할 수 있습니다

관련 문제