..


Gesponsorde links

jQuery: een voortgangsbalk op de "vulling" van een textarea tonen

Artikel geschreven door Riccardo Brambilla
Pagina 1 van 2

Vaak problemen die lijken makkelijk op te lossen, meer uitdagende dan verwacht te bewijzen, en dat is dat meestal is er te verliezen een halve dag werk losmaken opnieuw proberen meer of minder orthodoxe en koortsachtig overleg websites, wanhopig op zoek naar iemand die al geconfronteerd met de probleem.

Wanneer een project dat ik de noodzaak om het aantal tekens in een tekstveld Ik dacht dat ik opgelost in een paar minuten limiet had, het niet zo was, vond ik verschillende oplossingen op het net maar geen overtuigde me tot het einde, dus ik besloot om implementeren iets op maat met behulp van jQuery en de grote jQueryUI , met name de component van het pakket progessbar.

Herstel van de benodigde bestanden

Colleghiamoci om http://jqueryui.com/ en klik op de knop "Custom Build Downloads 'rechts bovenaan.
Op de volgende pagina te selecteren nuttige componenten, en een van de widgets beschikbaar zijn hebben we besloten om alleen de voortgangsbalk te nemen.

jQueryUI download pagina opties
We kiezen voor de grafische sjabloon uit het dropdown menu aan de rechterkant en klik op "Download". Pak het pakket dat u net gedownload, en er zijn drie mappen en een bestand in de root:
  • css bevat de map van het thema gekozen, in ons geval de standaard, ui-lichtheid
  • ontwikkeling-bundel bevat voorbeelden en documentatie
  • js: het bevat de twee bestanden die nodig zijn om onze oplossing te rennen, jquery en jquery-ui-1.4.4.min.js-1.8.9.custom.min.js
  • index.html: een pagina die ons laat zien een voorbeeld van een thema / widgets hebben we gekozen voor de

Voor onze kleine voorbeeld maken we een eenvoudige structuur als volgt uit:

  • gedecomprimeerd map van jQueryUI (jquery-ui-1.8.9.custom)
  • file.html pakket met het tekstveld
  • file.js met de jQuery-code

We creëren onze html-bestand, geef het een zinvolle naam (we zullen noemen mrw_jquery_txtcheck.html) en plaats in het hoofd vereiste tag insluitsels: links naar het thema css en js bestanden voor jQuery en jQueryUI.






 href = "jquery-ui-1.8.9.custom/css/ui-lightness/jquery-ui-1.8.9.custom.css" <link type="text/css" rel="stylesheet" />







 <script type="text/javascript" src="jquery-ui-1.8.9.custom/js/jquery-1.4.4.min.js"> </ script>







 <script type="text/javascript" src="jquery-ui-1.8.9.custom/js/jquery-ui-1.8.9.custom.min.js"> </ script>



In het lichaam toe te voegen het tekstveld:

 



 <div> <textarea name="limitedOne" id="limitedOne" style='width:250px;height:100px;'> </ textarea> </ div>

 

Dan dial-up van de div dat de voortgangsbalk, en een tijdelijke aanduiding naar een idee te geven hoeveel personages zijn ook numeriek zal bevatten.






 <div id="progress" style="height: 20px;"> </ div>







 Beschikbaar <p> <span id="charCounter"> 255 </ span> tekens. </ P>



Nu kunnen we overgaan naar een apart bestand aan de Javascript / jQuery schrijven met de nodige functies, die vervolgens ook opnemen in het hoofd-tag, zullen we check_textarea.js noemen.
Eerste definiëren de basis-variabelen, de toegestane karakters en die beschikbaar zijn dezelfde waarde hebben bij het begin:






 MAX_CHARS = 255;







 Resterende = MAX_CHARS;



Dan definiëren we de functie die controleert en verbetert ProgressBar en tegen te gaan:





 checkTextareaLength function () {





  



 current_length == undefined var = $ ("# limitedOne.") val (). lengte?

 



 0: $ ("# limitedOne.") Val () Lengte;.



  



 Resterende = (MAX_CHARS - current_length);



	

  



 if (Resterend <0) {

	

    



 ... $ ("# LimitedOne") ($("# LimitedOne val ") Val () Subtekenreeks (0, MAX_CHARS));



  



 Else {}



    



 $ ("# CharCounter") Html (resterende).;



    



 var pv = Math.floor ((((MAX_CHARS-Overig) / MAX_CHARS) * 100));



    



 . $ ('# Progress') Voortgangsbalk ('value', pv);



  



 }







 }



Wij analyseren de code: de eerste lijn in checkTextareaLength krijgt de huidige waarde van het tekstveld door de val functie () jQuery, tel dan het aantal tekens ingevoerd door het lezen van de lengte-attribuut.
Op de volgende regel wordt het aantal tekens beschikbaar is voor het verschil. Op dit punt zijn er twee mogelijkheden.

1. Resterende variabele kleiner is dan nul (bijvoorbeeld na een copy / paste), het if-blok verzamelt de waarde van het tekstveld en beperkt het tot 255 tekens met behulp van de eigen JavaScript-substring

 



 ... $ ("# LimitedOne") ($("# LimitedOne val ") Val () Subtekenreeks (0, MAX_CHARS));

 

2. Resterende is groter dan nul, anders blok in de eerste overspanning is uitgebreid met het aantal resterende tekens:

 



 $ ("# CharCounter") Html (resterende).;

 

Dan is de functie berekent de verhouding tussen het maximum aantal beschikbare tekens en die momenteel opgenomen, de bibliotheek functie Math.floor rondes het resultaat (beneden) naar de dichtstbijzijnde:

 



 var pv = Math.floor ((((MAX_CHARS-Overig) / MAX_CHARS) * 100));

 

Op dit moment kunnen we alleen toekennen van de waarde gevonden in de progressbar

 



 . $ ('# Progress') Voortgangsbalk ('value', pv);

 

Laten we de code die wordt uitgevoerd op de DOM Ready schrijven.
We initialiseren de voortgangsbalk, en voer de bind je wilt de gebeurtenissen onderscheppen: de indrukken, de mouseOut, en verander de onscherpte. Monitor ze allemaal aan het evenement, dat de gebruiker moet het kopiëren / plakken gebruik te vangen.
Merk op dat de functie-aanroep wordt vertraagd door een paar honderdsten van een seconde door de inheemse functie setTimeout dus zorg ervoor dat de waarde altijd op het juiste moment, wanneer de gebruiker klaar is met typen.






 $ (Function () {



  



 $ ("# Progress") Voortgangsbalk ().;



  



 $ ("# LimitedOne.") Bind ("mouseout veranderen vervagen druk op de knop", function () {



    



 setTimeout ("checkTextareaLength ()", 200);



  



 });







 });



In dezelfde categorie ...
E-Learning
CSS (Cursus) CSS (Cursus)
Web Design en toegankelijkheid volgens de W3C CSS en XHTML. Vanaf 29 €.
HTML (Cursus) HTML (Cursus)
De opmaaktaal voor het web vanaf 29 €.
JavaScript (Cursus) JavaScript (Cursus)
Complete gids voor client-side scripting. Vanaf 39 €.
Gesponsorde links