2010-06-09 2 views
2

1) 특정 텍스트 상자에 포커스가있을 때마다 열리는 jQuery 대화 상자가 있습니다. 대화의 내용은 아약스 (이 같은) 아약스 호출에서 전달되는 집중 된 텍스트 상자의 고유 ID에서로드 : PART 잘 작동jquery 대화 상자가 양식 필드를 지우고 있고 jquery 대화 상자에서 값을 반환해야합니다.

$('[name=start_airport[]],[name=finish_airport[]]').click(function(){
  var id = $(this).attr('id');
  if($('#use_advanced_airport_selector').attr('checked')) {
    $('#advanced_airport_selector').dialog({
      open : function() {
        $(this).load('/flight-booker/advanced-airport-selector.php?callerID='+id);
      }
    });
    $('#advanced_airport_selector').dialog('open');
  }
});

(where advanced_airport_selector is an empty div)

합니다. 그러나 내 대화 내에서 내 아약스 호출을 만들 때 모든 양식 값이 다시 설정됩니다! 내가하는 일과 관계없이 대화 상자가 열리면 모든 양식 값이 재설정됩니다 (초점을 맞춘 텍스트 상자의 값만이 아님). 나는이 행동의 원인을 이해하지 못한다!

하지만 문제는 # 1뿐입니다.

2.)이 대화 상자에서 값을 반환 할 수 있어야합니다. Ajax 쿼리에서 ID를 전달하므로 대화 상자 내에서 특정 작업이 수행 된 후에 jquery 선택기를 사용하여 호출자의 값을 업데이트 할 수 있습니다. 그러나, 필자가 본 적이없는 DOM_ERRORS 때문에 실제로 해당 텍스트 상자에 액세스 할 수 없습니다. 그것은 어떤 의미가 없습니다!

많은 코드를 게시 할 수있는 방법이 있습니다. 설명하기가 정말 어렵습니다. 내가 묻는 것에 대해 명확하지 않은 경우 미안합니다.

답변

1

문제 # 2의 DOM 오류는 선택 도구의 대괄호 때문에 발생할 수 있습니다. 대괄호 ([및]) jQuery를 특수 문자, 그래서 당신은이처럼 탈출해야합니다

$('[name=start_airport\\[\\]],[name=finish_airport\\[\\]]').click(function(){ 
... 
}); 

http://api.jquery.com/category/selectors/에서 :

당신이 메타 문자를 (사용하고자하는 경우 예 : "# $ % & '() * +,./:; < =>? @ [] ^`{|} ~)은 문자 그대로 리터럴 부분이므로 두 개의 백 슬래시로 이스케이프해야합니다. \\. 예를 들어 id = "foo.bar"인 요소가있는 경우 선택기 $ ("# foo \\. bar")를 사용할 수 있습니다.

관련 문제