2011-10-30 14 views
11

J'ai trois cases à cocher et une zone de texte maintenant Si j'écris quelque chose dans la zone de texte et cochez la case en gras, le texte devrait apparaître en gras et italique et souligner sans postback (ie devrait refléter immédiatement avec l'effet sélectionné).Comment faire du texte gras, italique et souligné en utilisant jquery

Voici mon code:

Bold:<input type="checkbox" value=""/> 
Italic:<input type="checkbox" value=""/> 
Underline:<input type="checkbox" value=""/> 

<input type="text" value=""> 
+0

je ne pense pas que vous pouvez définir le style du texte d'entrée comme souligné, si vous pouviez donc remplacer la saisie de texte avec un élément tel qu'un div – david

+0

En fait, j'ai essayé d'utiliser cette façon http: // www .script-tutorials.com/texte-animation-jquery-ui-slider/et j'ai besoin de la même chose pour la décoration de texte. – coder

Répondre

34

Vous pouvez effectuer les opérations suivantes:

<form> 
    Bold:<input name="textStyle" type="checkbox" value="bold"/> 
    Italic:<input name="textStyle" type="checkbox" value="italic"/> 
    Underline:<input name="textStyle" type="checkbox" value="underline"/> 

    <input name="styledText" type="text" value=""> 
</form> 

<script type="text/javascript"> 
    $('input[name="textStyle"]').change(function(){ 
     if ($(this).val() == 'bold'){ 
      if ($(this).is(':checked')) $('input[name="styledText"]').css('font-weight', 'bold'); 
      else $('input[name="styledText"]').css('font-weight', 'normal'); 
     } 
     else if ($(this).val() == 'italic'){ 
      if ($(this).is(':checked')) $('input[name="styledText"]').css('font-style', 'italic'); 
      else $('input[name="styledText"]').css('font-style', 'normal'); 
     } 
     else if ($(this).val() == 'underline'){ 
      if ($(this).is(':checked')) $('input[name="styledText"]').css('text-decoration', 'underline'); 
      else $('input[name="styledText"]').css('text-decoration', 'none'); 
     } 
    }); 
</script> 

Fiddle ici: http://jsfiddle.net/tyfsf/

Hope it helps!

+0

Merci beaucoup de m'avoir résolu ce problème. – coder

0

texte à l'intérieur d'une entrée ne peut pas être formaté de cette façon. Vous pouvez essayer et feindre avec un editable div.

<div contenteditable></div> 

Et d'utiliser jQuery sur cela.

+0

En fait, j'ai essayé d'utiliser de cette façon http://www.script-tutorials.com/text-animation-jquery-ui-slider/ et j'ai besoin de la même chose à utiliser pour la décoration de texte. – coder

7

Vous pouvez le faire en utilisant CSS simple et un peu de code jQuery.

1.Premièrement définir vos classes de feuille de style en cascade

<style type="text/css"> 
.bold { 
font-weight:bold; 
} 
.italic { 
font-style:italic; 
} 
.underline { 
    text-decoration: underline; 
} 
</style> 

2.Chargez jQuery

<script type="text/javascript" src="jquery.js"></script> 

3.Write la fonction de commutation des classes

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.selector').click(function() { 
     var checked = $(this).is(':checked'); 
     var value = $(this).attr('value'); 
     if(checked) { 
      $('#box').addClass(value); 
     } else { 
      $('#box').removeClass(value); 
     } 
    });  

}); 
</script> 

5.Modified html

Bold:<input class='selector' type="checkbox" value="bold"/> 
Italic:<input class='selector' type="checkbox" value="italic"/> 
Underline:<input class='selector' type="checkbox" value="underline"/> 
<br> 
<input id="box" type="text" value=""> 
<br> 

lien jsFiddle: http://jsfiddle.net/deepumohanp/t2wKP/

Questions connexes