2013-04-09 4 views
0

나는 이것에 관한 모든 질문을 살펴본 결과 해결책을 찾을 수 없습니다. 나는 AJAX 호출을 통해 DOM에 추가되는 양식을 가지고 있으며, 성공적으로 완료되면 javascript 메소드에 양식 제출물을 연결한다. Chrome에서 잘 작동합니다. 파이어 폭스 (20) 내 자바 스크립트 메소드를 호출하거나 장고에 의해 렌더링 (21)jQuery 양식이 Firefox에서 작동하지 않습니다.

$("#dateList").load("/chargeback/cb_timeentry/te_list/" + empId, function() { 
     $("#addEntryDate").submit(function() { 
      addEntryDate(); 
      return false; 
     }); 
    }); 

양식, (FF와 크롬 모두에서) 다음과 같습니다하지 않습니다

<div id="addOrDelete"> 
    <input id="addEntryDateButton" type="submit" value="+"> 
    <input id="deleteEntryDateButton" type="submit" disabled="true" value="-"> 
    <table> 
     <tbody> 
      <tr> 
       <form id="addEntryDate" class="uiText" method="get" action="."></form> 
       <form id="deleteEntryDateForm" class="uiText" method="get" action="."></form> 
      </tr> 
     </tbody> 
    </table> 
</div> 

양식을 작성으로 장고 템플릿이 같다 :

<div id="addOrDelete"> 
<table> 
    <tr> 
     <form id="addEntryDate" class="uiText" action="." method="get"> 
      <input id="addEntryDateButton" type="submit" value="+" disabled="true" /> 
     </form> 
     <form id="deleteEntryDateForm" class="uiText" action="." method="get"> 
      <input id="deleteEntryDateButton" type="submit" value="-" disabled="true"/> 
     </form> 
     </tr> 
</table> 
</div> 

부하 호출 내 버튼 유형을 보여주는 올바른 HTML로, 파이어 폭스에서 잘 작동 = addEntryDate 양식 내부에 제출합니다. 로드가 제출 라인에 도달하면 addEntryDate는 DOM에 있지만 클릭 할 때 addEntryDate() 자바 스크립트 메소드가 호출되지 않습니다. 나는 무엇을해야합니까?

+0

양식 코드를 입력하십시오. 전체 프로세스를 실행할 때 Firefox 콘솔에 오류가 있습니까? – Xeon

+0

는 (는) 양식 코드를 표시하도록 편집되었습니다. 콘솔에 오류 또는 경고가 표시되지 않습니다. – Shawn

답변

0

장고를 모르지만 렌더링 된 코드를 처음 보았을 때는 결코 작동하지 않아야한다고 생각합니다.

input submit은 기본 (브라우저 지원) 양식 제출을 제공하기 위해 form 요소 내에 있어야합니다. 하지만 어쨌든 작동한다면 Django는 mouseclick 자바 스크립트 이벤트를 올바른 폼 서브 브리 지션에 연결하는 자바 스크립트 코드를 추가 할 것입니다.

장고 템플릿에 의해 렌더링 된 양식이 작동하고 (AJAX를 통해) 만든 양식이 올바르게 작동하지 않기 때문에 가능합니다.

일부 jQuery/plain Javascript/etc가 있으면 redendered 페이지에서 검색하십시오. 귀하의 양식 subbmition에 대한 resposible 수 있으며 귀하의 AJAX 기반 양식에 복제하려고 코드입니다.

이것이 없으면 첫 번째 양식을 제출하지 않아야하며 Chrome에서 작동하는 이유를 알 수 없습니다.

하지만 적어도 당신은이 작업을 수행하는 간단한 jQuery를 작성할 수 있습니다

$("#dateList").load("/chargeback/cb_timeentry/te_list/" + empId, function() { 
     $(document).on("click", "#addEntryDateButton", function(e) { 
      e.preventDefault(); 
      e.stopPropagation(); 
      $("#addEntryDate").submit(); 
     }); 

     $("#addEntryDate").submit(function() { 
      addEntryDate(); 
      return false; 
     }); 
    }); 
+0

Django는 페이지에 스크립트를 추가하지 않습니다. 일단 정적 HTML이 렌더링되면 HTML 렌더링이 문제가됩니다. 양식을 제거하고 일반 바닐라 javascript onclick 기능을 사용하면이 문제를 해결할 수 있습니다. html을 문제로 올바르게 식별하므로 답변을 수락합니다. – Shawn

0

내 생각 엔 이미 페이지에 ID가 addEntryDate 인 요소가 있고 Firefox가 ID를 소유 한 것으로 인식하지만 Chrome이 우선 순위를 부여하기로 결정했습니다.

두 ID가 같은 요소를 생성하는 코드를 작성하지 말고 동적 DOM 조작을 고려하면 .load()을 사용하면 쉽게 실수 할 수 있습니다.

+0

이전에 그 오류가 있습니다. 이 경우에는 어떤 일이 일어나지 않습니다. – Shawn

관련 문제