2010-12-03 2 views
0

사용자가 jqGrid에서 편집을 클릭하면 열리는 양식에 몇 개의 목록 상자와 텍스트 상자가 있습니다. 목록 상자의 값에 따라 두 개의 텍스트 상자를 사용하지 않도록 설정하거나 양식이로드 될 때만 읽도록 설정해야합니다.jqGrid editingit를 사용하여 편집 다른 필드의 값을 기반으로 필드를 비활성화합니다.

필자는 목록 상자에서 onChange 이벤트를 사용하여 텍스트 상자를 사용 안 함으로 설정하거나 사용하지 않도록 설정했지만, 양식로드시이를 수행하는 데 어려움을 겪고 있습니다. Aftershowform을 사용하여 시도했는데, 이미 이벤트 핸들러가 있기 때문에 aftershowform2와 같은 다른 이벤트를 작성하고이 이벤트와 이벤트 핸들러를 연결했습니다. 그러나 문제는 목록 상자가 Ajax 호출 (editoptions의 dataurl)을 사용하여 동적으로로드되고 aftershowform이 이러한 목록 상자가 옵션으로 채워지기 전에 발생한다는 것입니다. 목록 상자가로드 된 후에 발생하는 다른 이벤트가 있습니까? 전체 응용 프로그램은 프레임 워크 기반이므로 코드를 붙여 넣기가 어렵습니다.

답변

1

귀하의 요구 사항을 구현하기 위해 여러 가지 방법을 사용할 수 있습니다.

첫 번째와 type:'change'editoptionsdataEvents (예를 들어 this 대답을 참조)의 사용이 될 것입니다 내 의견으로는 최고의 하나. 해당 코드 다음은 select 성공적 리턴 서버 함유 후 것이다 dataEvents 의해 정의 된 함수의 결합

editoptions: { dataUrl:..., 
       dataEvents: [ 
        { 
         type: 'change', 
         fn: function(e) { 
          var v=$(e.target).val(); 
          alert(v); // do something with selected item value 
         } 
        } 
       ] 
      } 

수있다.

jQuery.bindjQuery.live (코드 템플릿 here 참조)으로 바꿀 수있는 또 다른 방법은 현재 구현을 수정하는 것입니다.

+0

변경 이벤트를 시도했지만 양식이로드 될 때 이벤트가 발생하지 않습니다. 앞에서 말한 것처럼 목록 상자에서 옵션을 변경하면 변경 이벤트가 발생합니다. – anamar

+0

@anamar : 코드에서 작동하지 않으면 전체 코드와 함께 질문을 추가해야합니다. 문제를 재현 할 수 있다면 당신을 도울 수 있습니다. – Oleg

관련 문제