2010-05-07 6 views
1

사용자가 select 목록에서 옵션을 선택할 때 내용이 AJAX 요청으로 대체되는 페이지에 div가 있습니다. 페이지가로드, 나는 페이지의 텍스트 입력의 모든 요소에 대한 자동 완성 기능을 비활성화 명령을 발행 할 때 : 새로운 요소가 AJAX 호출 후 DIV에 나타날 때새 DOM 요소에 jQuery attr 값 적용 (AJAX 쿼리 결과)

//Stop that pesky browser autocomplete 
$('input[type=text]').attr("autocomplete", "off"); 

그러나,이 코드 줄은하지 않습니다 원래 DOM (페이지가로드되었을 때)의 일부가 아니기 때문에이를 참조하십시오.

//AJAX Post request that changes the fields in the address div for each different country 
$("div#address select#country").live("change", function() { 
    $.post("<?php print($_SERVER['PHP_SELF']); ?>", { country: $(this).val() }, function(data) { 
     $('div#address').html(data); 
    }, "text"); 
     $('div#address input[type=text]').attr("autocomplete", "off"); 
}); 

그러나

어떤 이유로 작동하지 않고 자동 완성 텍스트가 주소 필드 중 하나에 입력 할 때 팝업 : 나는 포스트 함수의 끝에 자동 완성 라인을 추가 노력했다. 내가 아는 한, 속성 변경은 이벤트로 분류되지 않으므로 .live()를 사용하여 입력 요소를 선택할 수 없습니다.

그래서 새로 만든 DOM 요소의 속성을 수정하는 방법에 대해 조언 해 줄 사람이 있습니까?

답변

2

페이지에 새 html을 추가 한 후 게시물 기능에 줄을 추가해야합니다.

$("div#address select#country").live("change", function() { 
    $.post("<?php print($_SERVER['PHP_SELF']); ?>", { country: $(this).val() }, function(data){ 
     $('div#address').html(data); 
     $('div#address input[type=text]').attr("autocomplete", "off"); 
    }, "text"); 
}); 

당신은 당신이 다음 .attr("autocomplete", "off");는 새로운 HTML에 적용되지 않도록 포스트가 완료되기 전에 실행되는 게시물에 그것을 가지고 자바 스크립트 방법을 실행하는 경우. 포스트 기능 안에 넣으면 새 html이 페이지에 있는지 확인할 수 있습니다.

+0

고마워요 :-) – danielcraigie