2010-08-05 6 views
1

내가 그러나이 코드를스페이스 바를 누르면 jQuery change()가 트리거되지 않습니까? 나는 스페이스 바를 명중 할 때 한자 사이의 간격을 강조하기 위해

function replaceSpaces(){ 
    var segmented = $(this).val().replace(/\s/g, "<span>&emsp;</span>"); 
    $('#preview').html(segmented); 
} 
$(document).ready(function(){ 
    $('.tobesegmented').focus(replaceSpaces); 
    $('.tobesegmented').change(replaceSpaces); 
}); 

있어, 내가 텍스트를 추가하는 경우에만, 하지 트리거 변경을 수행합니다. 사람이 스페이스 바를 친 때 replaceSpaces를 트리거 할 수있는 방법이 있습니까?

보너스 : <span>&amp;emsp;</span><span>&amp;amp;emsp;</span>이되는 이유는 무엇입니까?

답변

3

사용할 수있는 keyup event 대신 (또는 추가),이 같은 :

$('.tobesegmented').bind('focus keyup', replaceSpaces); 

.bind()도 있으므로, 그뿐만 아니라 설명 전원 코드의 비트를 면도 공백으로 구분 된 여러 이벤트 이름을 취할 수 :) 보너스를

: 또 다른 예로서 당신을 위해 인코딩 된 HTML을 얻을 수 있기 때문에, 요소에 .text('&') 실제로 HTML :

+1

참고 비 인쇄에 발사됩니다의 keyup에 &amp;를 렌더링 keypresses도 마찬가지입니다. (이 경우에는 OK이지만) 인쇄물을 대략적인 것으로 필터링하는 것이 좋은 아이디어 인 경우가 있습니다. –

+0

이것이 완벽합니다. (8 분) – Moak

관련 문제