2010-04-09 4 views

답변

18

실제로 편집하려는 문자열을 잘라내는 함수를 전달할 수 있습니다. 설정에서 사용하십시오.

data : function(string) {return $.trim(string)}, 
submit: "Save" 
+0

굉장합니다. 이것은 정말로 유용합니다. – Jake

+1

진지하게. 이 기본 객체에이 객체를 추가하여 jeditable 객체를 모두 빌드 한 다음 원하는대로 페이지를 포맷 할 수 있습니다. 정말 유용합니다 ... – Jake

+0

이것은 정말 좋은 답변입니다! 감사. –

1

흠, 이상합니다. Jeditable에서 그 문제가 발생하지 않습니다.

$.trim(" hello, how are you? "); 
12

이유를 찾았

아 잘 jQuery를가 트림 기능이 있습니다. 그리고 그것은 미친 짓이야! 당신이 HTML

<div id="inplace_edit_this"> 
    This is some text that will be edited in-place. 
</div> 

을 다음과 같은 경우 장소 편집에서

텍스트 주위에 공백을 삽입합니다 그리고 그것은 것입니다 텍스트 주위 NOT 삽입 공간은 HTML이

<div id="inplace_edit_this">This is some text that will be edited in-place.</div> 

처럼 보이는 경우 나는이 원인을 궁금해. 이는 아마도 브라우저와 자바 스크립트가 HTML을 해석하는 방식의 차이 때문일 수 있습니다.

+2

는 ... 문제의 해결 근본 원인은, Symmitchry의 제안이 잘 – dmytrivv

+1

을 고정하지 ...하지만이 답을 _is_ 경우하지 않습니다, 또는 수 없습니다, jEditable.js를 변경하십시오 – w4ik

+0

나는 dmytrivv에 동의합니다. 질문에 jEditable을 변경할 수 없다고 명시된 적이 없습니다. 위의 해결 방법을 시도했지만 시작 부분에 여전히 공간이 있습니다. Johan Bjorling과 Symmitchry의 솔루션은 항상 작동합니다. – ksindi

8

이것은 오래된 뉴스 일지 모르지만 비슷한 문제로 직면했습니다. 왜 그런지 모르지만 편집 된 텍스트 입력을 저장 한 후 다음에 클릭 할 때마다 11 개의 공백이 나타납니다. 편집 가능한 텍스트 앞에 삽입됩니다.

시행 착오를 많이 후, 나는 마침내 jeditable.js 파일의 라인 ~ 239을 편집하여이 문제를 해결 :

content.apply(form, [input_content, settings, self]); 

과 함께 대체 :

content.apply(form, [$.trim(input_content), settings, self]); 

(당 Baloneysammitch 님의 제안)

내가 뭘하는지 거의 알지 못한다는 것에 유의하십시오. 그러나 이것은 효과가있는 것처럼 보입니다! 어쩌면 나보다 더 많은 기술을 가진 누군가가 그 여분의 11 칸이 어디에서 왔는지를 설명 할 수 있습니다 ...

+0

고마워요, 이것으로 저와 같은 문제가 해결되었습니다! self.revert에있는 사전 편집 텍스트에서 이와 동일한 문제가 발생하는 경우 (또는 다른 사람이) 260 행 정도 변경 했으므로 $ .trim()은 self.revert라는 값을 변경 한 것입니다. 로 설정하고 원래 값 공백 문제를 해결했습니다. – Aaron

+1

정말 Greg DeVore의 방법을 사용해야합니다. http://stackoverflow.com/a/9087222/76672 jeditable 코어 파일을 업데이트하지 않습니다. – Jake

1

누군가가이 게시물에 답변 한 이후로 꽤 오랜 시간이 걸렸지 만 같은 문제가 발생하여 두 가지를 추가 할 것이라고 생각했습니다. 센트 가치. 이 문제는 파이어 폭스와 사파리에서만 발생했습니다. IE와 크롬에는이 문제가없는 것 같습니다.

줄 239에서 $.trim()에 대한 Symmitchry의 제안을 시도했지만 이것이 제대로 작동하지 않았습니다. 그래서 약간의 역 추적을했고, 문제가 첫 번째 라인과 라인 (176)의 주위에 나타나는 것을 파악이 이후

self.revert = $(self).html();

가 JQuery와 전화, 그것은 JQuery와 방법에 문제가 있는지 궁금한데 위에서 언급 한 브라우저와 상호 작용합니다. 확실하지 않음 ...

이 시점에서 $.trim()을 추가하면 예상대로 작동합니다.

나는 Chirantan이 html이 어떻게 배치되었는지가 그 공간이 존재하는지 여부에 차이가 있음을 발견했다.

3

내 응용 프로그램의 JEditable 1.7.1에서이 문제를 해결했습니다.이 솔루션은 Symmitchry의 솔루션과 거의 동일합니다.

204 행부터 JEditable이 데이터를로드하는 방법을 결정하는 코드 블록이 있습니다.

/* set input content via POST, GET, given data or existing value */ 
var input_content; 

if (settings.loadurl) { 
    ... 
} else if (settings.data) { 
    ... 
} else { 
    ... 
} 
content.apply(form, [input_content, settings, self]); 

는 jQuery를은 (내 버전의 행 239) 마지막 행하기 전에) 기능을 트림 그래서 당신은 얻을 추가 :

/* set input content via POST, GET, given data or existing value */ 
var input_content; 

if (settings.loadurl) { 
    ... 
} else if (settings.data) { 
    ... 
} else { 
    ... 
} 

try { 
    input_content = input_content.trim(); 
} 
catch(e) { 
    // DO NOTHING 
} 

content.apply(form, [input_content, settings, self]); 

이유를 내가 시도 - 캐치에 넣어 이유는 때를하기 때문에 텍스트 영역 또는 입력 텍스트로 JEditable 사용 input_content는 기본적으로 문자열입니다. 선택을 사용할 때 input_content는 객체이며 잘림에 잘 응답하지 않습니다.

try-catch를 사용하는 대신이 방법을 사용하는 것이 더 효과적 일 수 있지만 작업이 완료됩니다.

0

서식에 공백이 있으면 이런 현상이 발생할 수 있습니다. jEditable은 존중하면서 그것을 처리하고 콘텐츠를 수정하지 않습니다. 예를 들어 VS IDE 자동 포맷에서 HTML 렌더링이 잘되는 엄청난 간격을 만듭니다.

jQuery를 그냥 당신이 확인을 해주 마하려면 jEditable를 호출하기 전에 DOM을 잘라 사용하는 것이 더 공백을하지 않는 경우

어디

$('#BatchTable tbody td').each(function() { 
     $(this).html($.trim($(this).html())); 
}); 

oTable = $('#BatchTable').dataTable({ 
     "bJQueryUI": true 
}); 
0

내 경우이 솔루션은 파일 JQuery와에 라인 (390)에 </input>을 제거하는 것이었다. jeditable.js. 라인 전에 : 나를 위해 작동 var input = $('<input type="hidden"></input>'); 라인 : var input = $('<input type="hidden">');

관련 문제