2014-11-20 4 views
0

간단한 문제보기 : http://jsfiddle.net/9bmrjnwe/2/ (오류를 생성하려면 편집 할 행을 클릭 한 다음 이전 행을 클릭하고 이전 행을 클릭하십시오. 편집 모드.이 사용자 지정 컨트롤은 기본적으로 "HTML 선택"동안 행을 편집. 오류가 팝업됩니다.JQgrid 구문 오류, custom_value 함수의 반환 값에 인식 할 수없는 표현

감사

나는 JQuery와에 새로 온

는. 나는 사용자 정의 컨트롤을 포함 내 웹 페이지에있는 jqGrid이 select2와 함께. 여기에 JQgrid 열의 관련 코드가 있습니다.

 editoptions: { 
      custom_element: function (value, options) { 

       var val = $(value); 
       var output = []; 
       output.push("<select id = 'JQGridSelectCol1' width=900>"); 
       output.push('<option value= 101> ABC & XYZ </option>'); 
       output.push('<option value= 102> ABC XYZ </option>'); 
       output.push("</select>"); 
       var selectText = output.join(''); 

       $OuterDiv = $("<div id='SelectDivCol1'></div>"); 
       $OuterDiv.append(selectText); 

       $select = $OuterDiv.children("#JQGridSelectCol1"); 

       var value2 = $("#vEntries").jqGrid('getCell', lastSel, 'Code'); 
       $select.val(value2); 

       return $OuterDiv; 

      }, 
      custom_value: function myvalue(elem, operation, value) { 
       if (operation === 'get') { 
        return $(elem).find(":selected").text(); 
       } 
      }, 

이제 해당 열에서 선택한 텍스트에 앰퍼샌드 문자 (&)가 포함 된 행을 클릭 할 때까지 오류가 발생하고 "구문 오류, 인식 할 수없는 표현식 : ABC & XYZ"라는 메시지가 나타납니다. 여기서 "ABC & XYZ "이 (가) 선택한 텍스트입니다. 내가 크롬을 통해 디버깅하는 노력이 줄에 오류를 발견 :

https://github.com/tonytomov/jqGrid/blob/c2ceeced1230ab7e91570c3d9a1400f3e7f0f8ed/js/grid.common.js#L490

누구도 날이 점에서 인도 할 수 있습니까?

감사

+0

StackOverflow에 오신 것을 환영합니다! [해당 제목에 "태그에"태그를 포함해야합니까? "] (http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-the-titles)를 참조하십시오. 여기서 컨센서스는 다음과 같습니다. "아니, 그들은해서는 안된다". –

+0

오류는'custom_element'에 있습니다 만,'custom_value'의 코드 만 포함 시켰습니다. 전체 코드를 더 포함 할 수 있습니까? – Oleg

+0

@Oleg : JQGrid가 특정 행의 그리드 열에서 텍스트 값을 얻으려고 시도 할 때 오류가 정확하게 나타나고 편집을 위해 "html select"를 렌더링하려고합니다 (나는 rowediting을 사용하고 있습니다). 간단히하기 위해 아주 간단한 코드를 넣고 select2도 제거했습니다. 오류가 계속 발생합니다 : "구문 오류, 인식 할 수없는 표현식 : ABC & XYZ". 콤보 상자에서 다른 옵션 (앰퍼샌드 문자 없음)을 선택하여 저장하고 뒤로 이동하면 오류가 발생하지 않습니다. 감사합니다 – developer

답변

1

오류는 라인 custom_element

var val = $(value); 

입니다. 선을 제거해야합니다. 당신은 당신이 대신 $OuterDiv.append(selectText);$OuterDiv.append($(selectText).val(value)); 같은 것을 사용할 필요가 셀에서 값을 얻을 필요가 있지만 고려해야하는 경우

는 또한 당신을하는 것이 좋습니다 것이 확실하게 custom_element에서 만든 HTML 요소의 모든 ID를 제거 ID가 중복되지 않습니다.

+0

대단히 감사합니다. – developer

+0

질문 : 이 문제를 어떻게 파악 했습니까? Chrome 디버깅 도구에서 시도했지만 성공하지 못했습니다. 두 번째로, 줄 $ OuterDiv.append (selectText); 위의 문장 "var selectText = output.join ('');"에서 생성 된 HTML을 추가하는 것입니다. 내가 틀렸어? 세 번째로, HTML 요소에서 ID를 사용하지 않는 것과 관련하여 html select 태그 "$ select = $ OuterDiv.children ("# JQGridSelectCol1 "); 수업? 도움을 다시 한번 감사드립니다. – developer

+0

@ 개발자 : 환영합니다! 이제 좀 바빠. 오늘이나 내일 나중에 대답 해 드리겠습니다. – Oleg