2010-01-22 6 views
2

jQuery 1.4를 사용하여이를 수행하십시오.jQuery 양식 제출. 페이지 새로 고침 중지는 최신 브라우저에서만 작동합니다.

추가 body 태그에 대한 형태, 형태 자체에 대한 특별한 아무것도 :

$(function() { 
$('body').prepend('<form name="frmSample" id="frmSample"><input class="btn" type="submit" value="SIGN UP" /></form>'); 
}); 

나는 형태로 제출하려면 다음을 사용하고 있습니다 : 최신 브라우저에

$('#frmSample').live('submit', function() { 
    var formdata = $(this).serialize(); 

    $.ajax({ 
     type: 'POST', 
     url: 'http://www.example.com/Values.jsp', 
     data: formdata, 
     success:function() { 
     submit_success(); 
     } 
     }); 
    return false 
    }); 

을 (파이어 폭스 3.5, 사파리 4)이 잘 작동합니다. FF 3.0 이하로 내려 가면 IE 7이 멈 춥니 다.

저는 지금 막 붙어 있습니다. 좋은 비트를 찾고 있었는데 false 또는 event.preventDefault()를 반환하는 것 외에 다른 것을 언급하는 것을 찾을 수있었습니다.

그래서 나는 여기에 작은 것을 놓치고 있는지, 아니면 완전히 잘못된 방향으로 가고 있는지보고 싶습니다.

$('#frmSample').live('submit', function(e) { 
    stopEvent(e); 
    ....etc...etc 

을 그리고 stopEvent에 대한 코드 :

+0

그것은 자바 스크립트 오류가 다른 브라우저로 발생하는 것이 가능합니까? 나머지 JS 코드는 무시됩니다. –

답변

3

내가 stopPopagation보다 한 단계 더 갈 것이라고 봅니다 여기에서

function stopEvent(event) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    if ($.browser.msie) { 
     event.originalEvent.keyCode = 0; 
     event.originalEvent.cancelBubble = true; 
     event.originalEvent.returnValue = false; 
    } 
} 

: http://www.openjs.com/articles/prevent_default_action/

returnValue 및 preventDefault() 메서드

우리가 필요로하는 것이지만 기본 동작을 방지하기위한 false 반환 방법에 의존 할 수는 없습니다. 이 코드를 제공하면 함수가 종료됩니다. 따라서 함수에서 수행해야 할 것이 더 많으면이 코드를 사용할 수 없습니다. 내가 만나는 대부분의 상황에서 false를 반환하면 충분하지만 일부 영역에서는 좀 더 과감한 조치가 필요합니다. 더 많은 정보를 원하시면 구글에 다음과

유형 :

로 preventDefault 인 stopPropagation cancelBubble

+0

당신은이 거리에 정말로 거리를갔습니다. – Ariel

+0

이것은 일한 것으로 보입니다. 대단히 고마워. 또한 Google에서 조사 할 항목을 추가하여 주셔서 감사합니다. – DMClark

+0

No Probs. 그 답을 받아들이시겠습니까? –

1

$('#frmSample').live('submit', function(e) { 
    e.stopPropagation(); 
    var formdata = $(this).serialize(); 

    $.ajax({ 
     type: 'POST', 
     url: 'http://www.example.com/Values.jsp', 
     data: formdata, 
     success:function() { 
     submit_success(); 
     } 
     }); 
    return false 
    }); 
+0

false를 반환하는 것은 일반적으로 jQuery에서 대부분의 이벤트를 중지하는 나쁜 방법입니다. 항상 함수 매개 변수에서 이벤트를 가져 와서 stopPropagation()을 호출하십시오. –