나는 span
이고 contenteditable="true"
입니다. 나는 change
이벤트를 첨부하려고합니다. 그러나 jQuery 문서에 따르면 변경은 양식 입력에 대해서만 작동합니다. 다른 방법이라도?contenteditable span의 변경을 모니터링 하시겠습니까?
을 heres jsfiddle :
나는 span
이고 contenteditable="true"
입니다. 나는 change
이벤트를 첨부하려고합니다. 그러나 jQuery 문서에 따르면 변경은 양식 입력에 대해서만 작동합니다. 다른 방법이라도?contenteditable span의 변경을 모니터링 하시겠습니까?
을 heres jsfiddle :
http://jsfiddle.net/vQuEA/이 페이지에이 블록을 추가 :
$('[contenteditable]').on('focus', function() {
var $this = $(this);
$this.data('before', $this.html());
return $this;
}).on('blur keyup paste', function() {
var $this = $(this);
if ($this.data('before') !== $this.html()) {
$this.data('before', $this.html());
$this.trigger('change');
}
return $this;
});
이 contenteditable
와 태그가 변경 될 때마다 change
이벤트가 발생하게됩니다.
설명
focus
, blur
, keyup
및 paste
에 대한 이벤트 리스너를받을 것 contenteditable
특성이 모든 요소.
focus
동안 현재 내부 HTML은 요소의 '이전'데이터로 저장됩니다.
blur
/keyup
/paste
동안 현재 내부 html은 'before'데이터와 비교되고 다른 경우 change
이벤트가 트리거됩니다.
설명 좋을 것입니다. – mknaf
https://github.com/makesites/jquery-contenteditable
jQuery를의 contentEditable 는 자동으로 '의 contentEditable'필드에 이벤트를 추가하고 이 기본 구현에서 추가 처리 (및 저장)
사용
에 대한 데이터를 변경 반환 플러그인 메소드 contentEditable()은 모든 'contenteditable' 필드가있는 부모 컨테이너에 연결된 입니다.
$("#...").contentEditable().change(myFunction);
이것은 실제로 작동하는 것처럼 보입니다. 페이스트를 포함하여 모든 키 입력에
contentEditableTag.on('input', function(){
console.log("input event");
});
화재, : 그것은이 다른 답변 이후 새로운 일이 있지만, 많이 청소기인지 확실하지.
참조 - http://stackoverflow.com/questions/2949908/span-element-change-event, 일부 브라우저에서는 DOM의 변경 사항을 모니터링 할 수 있습니다. 속도가 느려지거나 더 좋은 방법이있을 수 있습니다. –
@ ScottSelby 그것은 내가 이미 알고있는 것, 그 변화는 형태 요소에 국한된다는 것을 말합니다. 다른 방법을 찾으려고 애 쓰고 –
버튼을 사용할 수 없습니까? 또는 텍스트 입력? 다른 이벤트를 사용하여 스팬의 html을 모니터 할 수 있습니까? –