..
Συχνά, τα προβλήματα φαίνεται εύκολο να λυθεί, να αποδειχθεί η πιο δύσκολη από το αναμενόμενο, και αυτό είναι ότι συνήθως είναι εκεί για να χάνουν το ήμισυ extricating μια ημέρα εργασίας ξαναδοκιμάσετε περισσότερο ή λιγότερο ορθόδοξες και εμπύρετων ιστοσελίδες διαβουλεύσεις, απελπισμένοι για κάποιον που έχει ήδη αντιμετωπίσει το πρόβλημα.
Όταν ένα έργο που είχα την ανάγκη να περιοριστεί ο αριθμός των χαρακτήρων που επιτρέπονται σε ένα textarea σκέφτηκα λυθεί μέσα σε λίγα λεπτά, δεν ήταν έτσι, βρήκα διάφορες λύσεις στο διαδίκτυο, αλλά δεν μου πειστική στο τέλος, γι 'αυτό αποφάσισε να εφαρμογή έθιμο κάτι χρησιμοποιώντας jQuery και εξαιρετική jQueryUI , ιδίως το στοιχείο της progessbar πακέτο.
Colleghiamoci να http://jqueryui.com/ και κάντε κλικ στο κουμπί "κατεβάσετε έθιμο Build" στο πάνω δεξιά.
Στην επόμενη σελίδα επιλέξτε χρήσιμα εξαρτήματα, και ένα από τα διαθέσιμα widgets και αν αποφασίσουμε να λαμβάνουν μόνο τα progressbar.

Για μικρό παράδειγμα μας θα δημιουργήσει μια απλή δομή ως εξής:
Δημιουργούμε HTML αρχείο μας, δώστε ένα όνομα με νόημα (θα τον λέμε mrw_jquery_txtcheck.html) και τοποθετήστε στο εγκλείσματα ετικέτα κεφάλι απαραίτητα: η σύνδεση με το θέμα css αρχεία και JS jQuery και jQueryUI.
href = "jquery-ui-1.8.9.custom/css/ui-lightness/jquery-ui-1.8.9.custom.css" <link rel="stylesheet" type="text/css" /> <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>
Προσθέστε το textarea στο σώμα:
<div> <textarea name="limitedOne" id="limitedOne" style='width:250px;height:100px;'> </ textarea> </ p>
Στη συνέχεια, τοποθετήστε το div που περιέχει την progressbar και ένα σύμβολο κράτησης θέσης για να σας δώσει μια ιδέα για το πόσοι χαρακτήρες είναι, επίσης, αριθμητική.
<div style="height: id="progress" 20px;"> </ p> Διαθέσιμο <p> <span id="charCounter"> 255 </ p> χαρακτήρες. </ P>
Τώρα μπορούμε να προχωρήσουμε για να γράψει τον κώδικα σε ένα ξεχωριστό αρχείο JavaScript / jQuery με τις απαραίτητες λειτουργίες, οι οποίες στη συνέχεια περιλαμβάνονται επίσης στην ετικέτα της κεφαλής, θα καλέσουμε check_textarea.js.
Πρώτα απ 'όλα ο καθορισμός των βασικών μεταβλητών? Χαρακτήρων που επιτρέπονται και εκείνες που είναι διαθέσιμες έχουν την ίδια αξία στην αρχή:
MAX_CHARS = 255? Παραμένοντας = MAX_CHARS?Στη συνέχεια, ορίζουμε τη συνάρτηση που ελέγχει και βελτιώνει progressbar και την καταπολέμηση:
λειτουργία checkTextareaLength () {
current_length == undefined var = $ ("# limitedOne"). val (). μήκος;
0: $ ("# limitedOne") Val () Μήκος?..
Παραμένοντας = (MAX_CHARS - current_length)?
αν (Υπόλοιπο> 0) {
$ ("# LimitedOne") ($("# LimitedOne val ") Val () συμβολοσειράς (0, MAX_CHARS))...?
Else {}
$ ("# CharCounter") html (Υπόλοιπο).?
var pv = η math.floor ((((MAX_CHARS-Παραμένοντας) / MAX_CHARS) * 100))?
. $ («Πρόοδος #») Progressbar («αξία», pv)?
}
}
Ας αναλύσουμε τον κώδικα: η πρώτη γραμμή στο checkTextareaLength παίρνει την τρέχουσα αξία του textarea χρησιμοποιώντας το val λειτουργία () jQuery, μετρούν τότε ο αριθμός των χαρακτήρων που έχουν εισαχθεί από την ανάγνωση το χαρακτηριστικό μήκος.
Στην επόμενη γραμμή δίνει τον αριθμό των χαρακτήρων που διατίθενται για διαφορά.
Σε αυτό το σημείο υπάρχουν 2 δυνατότητες.
1. Παραμένοντας η μεταβλητή είναι κάτω από το μηδέν (π.χ. μετά από ένα copy / paste) το αν μπλοκ παίρνει την αξία του textarea και τα όρια είναι έως 255 χαρακτήρες, χρησιμοποιώντας το εγγενές substring JavaScript
$ ("# LimitedOne") ($("# LimitedOne val ") Val () συμβολοσειράς (0, MAX_CHARS))...?
2. Παραμένοντας είναι μεγαλύτερη του μηδενός, άλλο μπλοκ κατά το πρώτο διάστημα είναι ενισχυμένη με τον αριθμό των χαρακτήρων που υπολείπονται:
$ ("# CharCounter") html (Υπόλοιπο).?
Στη συνέχεια, η συνάρτηση υπολογίζει την αναλογία μεταξύ του μέγιστου αριθμού των διαθέσιμων χαρακτήρων και εκείνων που περιλαμβάνονται σήμερα, η γύρους λειτουργία βιβλιοθήκης της η math.floor αποτέλεσμα (κάτω) με ακρίβεια:
var pv = η math.floor ((((MAX_CHARS-Παραμένοντας) / MAX_CHARS) * 100))?
Σε αυτό το σημείο μπορούμε να αναθέσετε μόνο την αξία που διαπιστώθηκε για progressbar
. $ («Πρόοδος #») Progressbar («αξία», pv)?
Ας γράψουμε τον κώδικα που εκτελείται για το DOM Ready.
Έχουμε προετοιμάσει το δεσμεύουν progressbar και την πραγματοποίηση των εκδηλώσεων που θέλετε να υποκλέψει: το πάτημα πλήκτρου, ο MouseOut, αλλαγή, και το θάμπωμα των εικόνων.
Monitor όλα αυτά να υποκλέψει το γεγονός ότι ο χρήστης πρέπει να χρησιμοποιήσει το copy / paste.
Σημειώστε ότι η κλήση της συνάρτησης είναι να αναβληθεί για λίγα εκατοστά του δευτερολέπτου από τον γηγενή setTimeout λειτουργία ώστε να είναι σίγουρος ότι έχει πάντα την αξία την κατάλληλη στιγμή, όταν ο χρήστης έχει τελειώσει την πληκτρολόγηση.
$ (Function () {
$ ("# Πρόοδος») Progressbar ().?
$ ("# LimitedOne.") Bind ("πάτημα πλήκτρου αλλαγή MouseOut θολούρα», η λειτουργία () {
setTimeout ("checkTextareaLength ()", 200)?
})?
})?
| |
CSS (Μάθημα)
Σχεδίαση και Προσβασιμότητα, σύμφωνα με το W3C CSS και XHTML. Ξεκινώντας από 29 €. |
| |
HTML (Μάθημα)
Η γλώσσα σήμανσης για τον Παγκόσμιο Ιστό από 29 €. |
| |
Javascript (Μάθημα)
Πλήρης οδηγός για δέσμες ενεργειών στην πλευρά του πελάτη. Από 39 €. |