Προς το περιεχόμενο

Ελεγχος χαρακτήρων κατα την εισαγωγή σε TextBox.(jQuery)


chrism4111

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σε όλους

 

Εχω τον παρακάτω κώδικα javaScript.

 

> 
        $('.textBox').live(function(){
                  
                  keydown: function()
                  {
                       var Title = $(this).val();
                       var TitleLength = Title.length;
                       var LastCharacter = Title.substring(TitleLength-1,TitleLength);
                       if(LastCharacter != '<' && LastCharacter != '>' && LastCharacter != '"' && LastCharacter != '\''){}
                       else
                       {
                           $(this).stop(true,false).val(Title.substring(0,TitleLength-1));
                       } 
                   }

Ο παραπάνω κωδικας όπως καταλαβενετε ελεγχει το textBox την εισαγωγή των συγγεκριμένων χαρακτήρων <,>,',".

Ο ελεγχος γίνετε κατα την εισαγωγή τους δηλαδη κατα το keydown και ο έλεγχος αφορά πάντα τον τελευταιο χαρακτήρα του TextBox.

πχ δεν μπορώ να γράψω το παρακατω : cccc< ή aaaa' .

 

Αυτο που θέλω να κανω είναι ο ελεγχος να γίνετε κατά το πάτημα του κουμπιου και όχι μονο στον τελευταιο χαρακτηρα.

πχ οπως παραπανω δεν μπορω να γραψω το cccc< να μην μπορω με το ίδιο τρόπο να γράψω και cc<cc δηλαδη αφου εχω γράψει το cccc

αμα πάω σε μια θέση του κείμένου η οποία δεν ειναι και η τέλευταια να μην μπορω να γραψω τους χαρακτήρες που θα του ορίσω.

 

Ουσιαστηκα θέλω να αποκλεισω τους 'επικυνδυνους' χαρακτήρες απο τα textBox μου και για λογους αισθητικούς αλλά και για λόγους ασφαλείας. Βεβαία θα υπάρχει και αλλος έλεγχος με την PHP κατα το submit.

 

Ευχαριστω για την ανάγνωση αν και για τοσο μικρο προβλημα εγραψα αρκετά(περιττα). :)

Δημοσ.

Ο τρόπος που απομονώνεις τον χαρακτήρα που πληκτρολογήθηκε κάθε φορά είναι πολύ περίπλοκος. Ορίστε ένας πιο απλός τρόπος:

 

>$('.textBox').live('keypress', function(event) {
   switch(event.which) {
   case 34:
   case 39:
   case 60:
   case 62:
       return false;
   }
});

 

Οι αριθμοί αντιστοιχούν προφανώς στον ASCII code των χαρακτήρων που ανέφερες.

 

 

Σε HTML5 βέβαια, τα παραπάνω θα γίνονται απλά με ένα regular expression στο pattern attribute ενός input element... :whistle:

Δημοσ.

Ο τρόπος που απομονώνεις τον χαρακτήρα που πληκτρολογήθηκε κάθε φορά είναι πολύ περίπλοκος. Ορίστε ένας πιο απλός τρόπος:

 

>$('.textBox').live('keypress', function(event) {
   switch(event.which) {
   case 34:
   case 39:
   case 60:
   case 62:
       return false;
   }
});

 

Οι αριθμοί αντιστοιχούν προφανώς στον ASCII code των χαρακτήρων που ανέφερες.

 

 

Σε HTML5 βέβαια, τα παραπάνω θα γίνονται απλά με ένα regular expression στο pattern attribute ενός input element... :whistle:

 

- Την switch την είχα παρεξηγηση λιγάκη αλλα χρησιμεύει αρκέτα.

- Το event.witch δουλευει με την keyup και keydown?Ή δουλεύει μονο με την kepress?

το είχα χρησιμοποιησει με το keyup kai keydown αλλα δεν μου δουλευε.

 

- Επισης στην Html 5 o ελεγχος απ'οτι νομίζω γίνετε κατα το submit. Εαν αυτο ισχυει δεν με βολευει γιατι ουσιαστηκα αυτο το Project που φτιαχνω στέλνει τα δεδομένα μεσω Ajax και έτσι δεν χρησιμοποιώ κάποια φόρμα.(Πρόκειτε για πτυχιακή και ετσι είναι ολο σε Html 5).

 

Parsifal thnks για την γρηγορη απάντηση.

 

Εκτος απο αυτα . Επειδη το site ακομα το έχω σε τοπικό επίπεδο (σε λιγο καιρο θα το ανεβάσω ετσι ωστε όλα τα τεστ κτλ να ειναι ονΛινε και να έχω πλήρη είκονα ) , Υπάρχει κάποιος τρόπος για να δω αν αυτο που έχω φτιάξει πληρή τις προυποθέσεις της Html 5;

Δημοσ.

- Την switch την είχα παρεξηγηση λιγάκη αλλα χρησιμεύει αρκέτα.

Εντάξει, θα μπορούσες κάλλιστα να βάλεις μία if αντίστοιχη με αυτήν που έχεις στον αρχικό σου κώδικα. Με βόλεψε έτσι, γιατί μου φάνηκε πιο straightforward από το να γράφω περίπλοκο μακρυνάρι στη συνθήκη μίας if.

 

 

- Το event.witch δουλευει με την keyup και keydown?Ή δουλεύει μονο με την kepress?

το είχα χρησιμοποιησει με το keyup kai keydown αλλα δεν μου δουλευε.

Το έγραψες σωστά; Είναι "which", όχι "witch". Α, και σε παλιές εκδόσεις του IE αν θυμάμαι καλά δεν παίζει έτσι (σε IE9 παίζει όμως), θέλει άλλον τρόπο για να πάρεις τα keycodes. Δες εδώ ένα παραδειγματάκι.

 

 

- Επισης στην Html 5 o ελεγχος απ'οτι νομίζω γίνετε κατα το submit. Εαν αυτο ισχυει δεν με βολευει γιατι ουσιαστηκα αυτο το Project που φτιαχνω στέλνει τα δεδομένα μεσω Ajax και έτσι δεν χρησιμοποιώ κάποια φόρμα.(Πρόκειτε για πτυχιακή και ετσι είναι ολο σε Html 5).

Πρόσεξε το μόριο του μέλλοντα «θα» που χρησιμοποίησα: Οι browsers ακόμη δεν υλοποιούν όλοι και στον ίδιο, ικανοποιητικό βαθμό, όλα τα features της HTML5.

 

 

Εκτος απο αυτα . Επειδη το site ακομα το έχω σε τοπικό επίπεδο (σε λιγο καιρο θα το ανεβάσω ετσι ωστε όλα τα τεστ κτλ να ειναι ονΛινε και να έχω πλήρη είκονα ) , Υπάρχει κάποιος τρόπος για να δω αν αυτο που έχω φτιάξει πληρή τις προυποθέσεις της Html 5;

Υπάρχουν HTML5 validators, όπως αυτός του W3C consortium.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...