2010-08-05 10 views
1

Afin de mettre en évidence l'espacement entre les caractères chinois que j'ai ce codejQuery change() ne se déclenche pas lorsque vous appuyez sur espace?

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

cependant, il ne pas déclencheur du changement quand je frappe la barre d'espace, seulement quand j'ajouter du texte. Y at-il un moyen de déclencher les espaces de remplacement quand une personne frappe la barre d'espace? Bonus: Aussi, pourquoi <span>&amp;emsp;</span> devient-il <span>&amp;amp;emsp;</span>?

Répondre

3

Vous pouvez utiliser le keyup event au lieu (ou en plus), comme ceci:

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

.bind() peut également prendre plusieurs noms d'événements séparés par un espace, illustrant que bien, rasant un peu de code :)

pour le bonus: car il obtient HTML codé pour vous, comme un autre exemple, .text('&') sur un élément sera effectivement rendu &amp; dans le code HTML :)

+1

Notez que keyUp sera le feu sur la non-impression keypresses aussi, donc (alors que dans ce cas c'est OK) c'est parfois une bonne idée de le filtrer à quelque chose d'imprimable approximatif si c'est ce qui vous intéresse. –

+0

c'est parfait, acceptera quand je peux (8 minutes) – Moak

Questions connexes