2013-06-19 2 views
5

양식을 제출할 때 파일 업로드 진행률 표시 줄과 같은 몇 가지 다른 작업을 수행 할 때까지 제출 작업을 방지하고 싶습니다. event.preventDefault() function not working in IE과 같은 SO 질문을 기반으로이 코드를 설정했습니다.IE 10의 event.preventDefault

$(document).ready(function(){ 
    $("#fileform").submit(function(e){ 
     if(!e) e = window.event; 
     if (e.preventDefault){ 
      // Firefox, Chrome 
      e.preventDefault(); 
     }else{ 
      // Internet Explorer 
      e.returnValue = false; 
     } 

     // other code 
    } 
} 

모든 것이 Firefox와 Chrome에서 잘 작동합니다. 제출 작업이 금지되고 진행률 표시 줄이 나타나면 양식을 제출할 때 제출됩니다. 그러나 IE 10에서는 if 문의 첫 번째 조건이 실행되고 양식이 제출하려고 시도하는 것으로 보입니다 (IE 10의 제출 거품이 표시됨). 첫 번째 조건이 실행되는 이유는 무엇입니까?

IE 10은 IE 8 및 9가 지원하지 않는 Defected()를 지원합니까? 그렇다면 Internet Explorer 8, 9, 10에서 Firefox, Chrome, Safari 등을 방해하지 않는 양식 제출 조치를 어떻게 적절하게 처리 할 수 ​​있습니까?

답변

8

jQuery는 이미 크로스 브라우저 작업을 수행했습니다.

e.preventDefault(); 

http://api.jquery.com/event.preventDefault/

http://api.jquery.com/event.stopPropagation/

당신이 읽는다면

e.stopPropagation(); 

후 :

$("#fileform").submit(function(e){ 
    e.preventDefault(); 
    // other code 
}); 
+0

, 아무것도 변경되지 않습니다. Firefox와 Chrome은 여전히 ​​정상적으로 작동하지만 진행률 막대가 IE에 표시되지 않습니다 (IE 양식 제출 거품이 나타남). –

+0

네가 맞다. 이벤트가 jQuery에서 정규화되고 e.preventDefault()가 예상대로 작동합니다. 감사. –

0

시도는 다음 넣어 : Stop form from submitting , Using Jquery

은 다음과 같이 표시됩니다

Becoz e.preventDefault() is not supported in IE. In IE it is e.returnValue = false 

수정 된 코드 :이 코드를 사용하는 경우

$("#fileform").submit(function(e){ 
     if(!e) e = window.event; 

     e.preventDefault(); 
     e.stopPropagation(); 

     // other code, do something here 
     return true; // or false if something goes wrong 
    } 
+1

'e.preventDefault(); 사용하기. e.stopPropagation();'은 변경 사항을 표시하지 않습니다. –

+0

코드의 수정 된 부분을 참조하십시오. –

+0

여전히 차이가 없습니다. –

관련 문제