2011-10-14 2 views
0

jQuery .get() 호출에서 반환 될 때 cfinput 태그에 문제가 있습니다.cfinput autosuggest가 .get() 호출에서 제대로 반환되지 않습니다.

<cfform> 
    <cfinput type="text" name="txtinputfilter" autosuggest="cfc:#Application.cfcDir#autoSuggest.lookupTailNumber({cfautosuggestvalue})" > 

태그로드 제대로 예상대로 자동 제안 작동 : 나는과 같이 메인 페이지에 태그를 넣어합니다. 그러나 나는 일반적인 이름이 동일한 태그 (아무것도 다른) 별도의 템플릿을 넣어 경우,// ​​FilterData.cfm 포함, 그래서 같이 메인 페이지에서 호출 :

<div id="txt_input_container"></div> 
$(document).ready(function(){ 
    //the following get call is normally called on another select input's onchange 
    $.get('common/includes/FilterData.cfm', 
     //note that the following parameters are not being used in this example 
     {column: selectedValue, 
     filterValue: filterValue, 
     filterID: filterID, 
     configFile: 'Tracking/config/GeneralMaint.xml'}, 
     function(response){ 
      $('#txt_input_container').empty().append(response); 
     } 
    ); 
}); 

태그 부하를하지만, 자동 제안은 작동하지 않습니다. 이 오류 메시지는 다음

http://localhost/CORE/common/includes/FilterData.cfm?column=SERIAL_NUMBER&filterValue=&filterID=fi_1&configFile=Tracking%2Fconfig%2FGeneralMaint.xml 

http://localhost/CFIDE/scripts/ajax/yui/yahoo-dom-event/yahoo-dom-event.js?_=1318592952367 

http://localhost/CFIDE/scripts/ajax/yui/animation/animation-min.js?_=1318592952634 

http://localhost/CFIDE/scripts/ajax/yui/autocomplete/autocomplete-min.js?_=1318592952706 

http://localhost/CFIDE/scripts/ajax/messages/cfmessage.js?_=1318592952745 

http://localhost/CFIDE/scripts/ajax/package/cfajax.js?_=1318592952782 

http://localhost/CFIDE/scripts/ajax/package/cfautosuggest.js?_=1318592952821 

http://localhost/CFIDE/scripts/cfform.js?_=1318592952859 

http://localhost/CFIDE/scripts/masks.js?_=1318592952907 

:

_cf_resetLoadingIcon_1318592952305 is not defined 
[Break On This Error] /* ]]> */</script> 
+0

나는 약간의 질문으로 혼란 스럽다. 단. 두 번째 예제에서 cfinput이 어디에 사용되는지 알지 못합니다. 첫 번째 및 두 번째 코드 조각을 수정하여 cfinput이 jQuery와 관련된 위치를 표시하도록 할 수 있습니까? –

+0

@Shawn, 나는 질문을 편집했다. – earachefl

+0

div_input_container 내에 생성 된 cfform/cfinput을 동적으로 표시하려고합니까? 상위 템플릿에 자체 jscript가 있고 호출 템플릿에 autosuggest param을 사용할 때 CF가 동적으로 생성 한 * 자체 jscript가 있기 때문에 문제가 될 수 있습니다. 당신이하려고하는 것은 할 수 있지만, 의심되는만큼 쉽게 할 수는 없습니다 - 함수 (응답)는 cfinput 자동 응답에 응답하는 핸들러를 가져야합니다. 동적으로 표시된 cf가 적절히 생성 된 jscript (CF 별)를 기대하기 때문에 오류가 발생하지만 결과에는 해석되지 않습니다. –

답변

1

이것은 당신이 듣고 싶은 대답하지 않습니다 콘솔 여덟 개 더 많은 통화 다음에 내 GET을 보여줍니다.

jQuery .get() 작업의 결과를 동적으로 표시하고 새 javascript를 적용하려면 새로 표시된 HTML에 영향을주는 이벤트를 초기 .get()의 결과 핸들러에서 바인딩해야합니다.). 일반적으로이 가능 하죠 ... 뭔가의 라인을 따라입니다 : 당신은/그 새로운 입력 필드로 변경 이벤트의 결합에서 새로운 함수를 호출 가리 키도록 방법을 찾을 것

$.get('common/includes/FilterData.cfm', 
     {column: selectedValue}, 
     function(response){ 
      $('input').change(function(event){ 
       ...addtl. logic here 
      } 

그 초기 .get() 호출의 결과로로드되었습니다.

여기에는 CFML이 관련되어있어 진부한 경우가 있습니다. cfform/cffinput을 autosuggest 매개 변수와 함께 사용하면 자동으로 javascript를 빌드합니다 ... 자동으로. 그러나이 코드의 생성을 제어 할 수는 없습니다. CF는 임의로 이름을 지정합니다. 테스트 할 코드를 입력하면 _cf_autosuggest_init_1318614417652라는 함수가 생겼습니다 ... 똑같습니까? (아마).

따라서 새로운 이벤트 처리기를 .get() 결과에 동적으로 바인딩하는 것은 매우 어려울 것입니다. 호출 할 항목을 모를 경우에는 매우 어려울 것입니다.

내 생각에 cfform/cfinput을로드하지 않고 원시 데이터 자체를로드하지 않도록 .get() 호출을 다시 디자인하고 상위 템플릿에 입력을 유지하거나) ...

... cfform/cfinput을 스크랩하고 함수의 이름을 제어 할 수 있도록 jQuery autosuggest 기능을 직접 작성하여 jQuery 결과 핸들러에서이를 가리킬 수 있습니다. 동적으로 바인딩 할 시간.

+0

안녕하세요 Shawn, 그 방향이 우리가 여기로 향하고 있다고 생각합니다 ... 우리는 ExtJS에서 jQuery로 사이트의 많은 부분을 변환하고 있습니다. 갈수록 더 두 가지가 항상 훌륭하게 재생되지는 않습니다. 함께. 불행히도 마감일이 다가오고 있습니다 ... – earachefl

관련 문제