2012-08-13 4 views
2

AJAX의 responseText를 사용하는 HTML 프로그램이 DIV에 인쇄됩니다. 그 DIV 안에는 이미 <input tpe="text value="" id="fechaD" />이 있습니다. 입력을 클릭 할 때 호출되는 JQuery 함수가 있습니다. 분명히 그 입력은 AJAX의 responseText로 대체 될 것이므로 responseText에 다시 추가했습니다. 문제는 이제 JQuery가 작동하지 않는다는 것입니다.Python의 AJAX에서 javascript가 작동하지 않습니다.

jQery 함수가있는 <script type="text/javascript">이 DIV 외부에 있어야하므로 AJAX의 응답으로 대체되지 않거나 responseText로 다시 추가되어야하는지 여부는 알지 못합니다. 나는 이미 둘 다 시도하고 일하지 않을 것이다.

jQuery를 사용하여이 작업을 시도했지만 작동하므로 jQuery에서 내 기능을 수행해야하는 항목이 있어야한다고 생각합니다.하지만 내 문제는 abaout jQuery를 모르므로 그 기능을 프로그래밍하지 못했기 때문입니다. . 사용자가 임의의 날짜를 선택하면

(함수가 ID = "fechaD"를 검색하고, 캘린더가 다음 날과 같이 나타난다 : 여기서

가있는 입력 onclicked 때 작동 JQuery와 함수 AJAX를 사용하면 새로운 ID = "fechaD"입력을 감지하지 못할 것입니다. 당신이 #fechaD 입력을 교체 할 경우

<script type="text/javascript"> 
     jQuery(function($){ 
      $.datepicker.regional['es'] = { 
       monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], 
       dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'], 
      }; 
      $.datepicker.setDefaults($.datepicker.regional['es']); 
     });  
     $(document).ready(function() { 
       $("#fechaD").datepicker(); 
     }); 
    </script> 
+0

두 개의 $ (document) .ready 기능이있는 것 같습니다. $ (function() {}); $ (document) .ready와 같은 것입니다. 그래서 jQuery (function ($) {}); –

+0

@DavidJohnson 그래서 $ (document) .ready (function()) 행을 제거해야합니까? – mauguerra

답변

1

, 새로운 하나는 더 이상 그와 관련된 datepicker 인스턴스가 없습니다.

것은 그것을 해결하려면 다음 중 하나를 수행 할 수 있습니다 :

  1. 전화 $('#fechaD').datepicker(); 다시 교체 한 후 (새로운 날짜 선택기 인스턴스를 생성);
  2. 대체 할 영역 외부로 #fechaD 입력을 옮깁니다 (권장).
+0

나는 이미 Ajax의 responseText 안에 완전한 JQuery 함수를 다시 넣으려고한다. 그래서 $ ('fechaD '). datepicker()를 다시 넣는다. 하지만 작동하지 않습니다 – mauguerra

+0

@mauguerra 바꾸려는 요소 밖에서 모든 스크립트를 이동해보십시오. 그것은 두통을 많이 줄 것입니다. –

+0

필자는 그것들을 요소 바깥으로 옮겼습니다. 필자는 그 요소를 대체 할 것이지만, ID = "fechaD"를 가진 새로운 입력을 탐지하지는 않습니다. 이 입력은 AJAX – mauguerra

0

두 개의 $ (document) .ready 기능이있는 것 같습니다. $ (function() {}); $ (document) .ready와 같은 것입니다. 그래서 jQuery (function ($) {});

아마 그들을 결합 해보십시오.

+1

둘 이상의 DOM 준비 핸들러가있는 데는 아무런 문제가 없습니다. 그들을 결합하는 것이 더 나은 실천입니다. –

+0

둘 다로드시 호출 되나요? –

+0

[정확히] (http://jsfiddle.net/nhTBb/). '=]'그들은 listeners로 묶여있는 다른 모든 핸들러와 마찬가지로 선입 선출 (first-in-first-out) 방식이며, 다른 엘리먼트를 덮어 쓰는 유일한 방법은'element.onclick = function() '과 같은 속성을 가진 vanilla JS를 할 때이다. {}'(해당 HTML'onclick = ""'나중에'element.onclick'에 의해 덮어 쓸 수 있습니다). –

관련 문제