2010-01-05 4 views
1

가 나는 onsubmit 핸들러과 같이 폼에 추가있어 :onSubmit 이벤트를 발생시키기 위해 클릭 한 버튼을 확인할 수 있습니까?

$('#content_form').bind('submit',function(e) { 

     source = $(e.target).attr('name'); 
     alert(source); 
     return false; 
    }); 

그래서 e.target 양식 요소를 =. 나는 여러 개의 submit 버튼을 사용하고 있는데 어떤 버튼이 실제로 클릭되었는지를 결정할 필요가있다. (현대의 브라우저에서는 버튼을 클릭하는 것이 유일한 것이고, 나는 IE6 compat을 위해 이것을 수행한다 - 모든 버튼의 값을 전송한다) .

내 생각에 모든 onsubmit 이벤트를 중단 한 다음 버튼 클릭 이벤트를 단추에 연결해야합니다. 자바 스크립트가 활성화되어 있지 않으면 폼 기능을 완전히 없앨 것이므로이 문제를 피하고 싶습니다.

+0

preventDefault();을 사용하는 것입니다 (js가 비활성화 됨으로 인해) - 문제가 없습니까? - 말하자면, 어떤 버튼을 눌렀는지 확인하는 더 쉬운 방법이있을 것입니다. – Graza

답변

1

쉽게 구현할 수 있지만 각 버튼에 대해 onclick 핸들러에 마지막으로 클릭 한 것을 나타내는 필드가 설정되어 있어야합니다. 제출 핸들러에서이 필드의 값을 확인할 수 있습니다.

+0

이 방법이 효과적 일지 모르지만 나는 응답을 읽고 고려한 후에 다른 방식으로 공격 할 것이라고 생각합니다. 거기에 "옙, X로 시작"하지만 분명히 말할 수있는 쉬운 방법이 있기를 바랬습니다 :) – Erik

+0

당신이 한 일을 다시 써주세요! 나는 당신이 어떻게 문제를 해결했는지 알고 싶어합니다. –

1
$('#content_form input:submit').bind('click', function(e) { 
    $('#content_form').submit(); 

    // you can now reference this or $(this), 
    // which should contain a reference to your button 
}); 
+0

'입력'키가 onsubmit 이벤트를 트리거 할 수 있기 때문에 이것은 제대로 작동하지 않습니다. 내가 그것에 대해 더 생각할수록, 나는 잘못된 방향에서 UI에 접근하고 있다고 생각한다. – Erik

0

jQuery Form Plugin을 확인 했습니까? 그것은 아약스를 통해 양식을 제출하는 것을 매우 잘 처리하고 (많은 다른 사람들과 함께)이 문제를 처리 할 것입니다.

-1

당신이 할 수있는 뭔가 다른 자바 스크립트가 활성화되어 있지 않은 경우 태그의 onsubmit 이벤트가 살해되지 않으므로이 양식 기능을 죽이지 않을거야, 당신은 자바 스크립트와 태그의 onsubmit 이벤트를 죽이면 대신 return false

+0

왜이 다우는 정신 차리게 되었는가? 이 기능을 명시하는 것이 중요하며'return false'는'preventDefault();'가 아닌 이벤트 전파를 막을 것입니다. –

+0

귀하의 답변이 초기 질문과 완전히 관련이 없기 때문에 – dVaffection

관련 문제