Περιορισμος τιμων σε πεδίο φόρμας

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Περιορισμος τιμων σε πεδίο φόρμας

Δημοσίευση από majuranus » 24 Ιουν 2010 11:11

Καλημέρα σας,

Έχω βρει ένα script για form Validation

Κώδικας: Επιλογή όλων

function isAlphabet(elem, helperMsg){
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}
Το οποίο ελέγχει αν κάποιος έγραψε μόνο κείμενο σε ένα πεδίο. Το κακό είναι ότι δεν παίζει αν γράψω Ελληνικούς χαρακτήρες.
Είναι προφανές πως όλη η δουλειά γίνεται εδώ
var alphaExp = /^[a-zA-Z]+$/;

Δοκίμασα να γράψω αυτό var alphaExp = /^[α-ωΑ-Ω]+$/;
αλλα δεν είναι σωστό..
καμιά ιδέα κανείς?

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Περιορισμος τιμων σε πεδίο φόρμας

Δημοσίευση από nbc » 24 Ιουν 2010 12:02

Το τι θα βάλεις μέσα, εξαρτάται από το encoding του string που θα τσεκάρεις. Άλλη περίπτωση το ISO/ANSI και άλλη το UTF-8.

Τα character range, όπως λέγεται, πρέπει να είναι ASCII για να το εισάγεις απευθείας. Διαφορετικά, θα πρέπει να χρησιμοποιήσεις hex notation. Για παράδειγμα, το [α-ωΑ-Ω] πρέπει να εισαχθεί ως [\xE1-\xF9\xC1-\xD9], το οποίο όμως αφορά ANSI encoding και φυσικά δεν περιλαμβάνει τονούμενα, κλπ.

Στην περίπτωση του UTF-8, το θέμα περιπλέκεται (ανάλογα και με το τι επιτρέπεις), καθώς το 1 byte γίνεται 2, όσον αφορά τους ελληνικούς χαρακτήρες. Δεν θα επιτρέπεις λατινικούς χαρακτήρες? Και αν επιτρέπεις, δεν θα επιτρέπεις accent χαρακτήρες σε άλλες γλώσσες? Εγώ, χρησιμοποιώ αυτό, για έλεγχο γενικώς ενός utf-8 string που να περιέχει "normal" χαρακτήρες, χωρίς διάκριση στη γλώσσα:

Κώδικας: Επιλογή όλων

                
$utf8 = '/^('.
        '[\x09\x0A\x0D\x20-\x7F]'.              # ASCII
        '|[\xC2-\xDF][\x80-\xBF]'.              # non-overlong 2-byte
        '|\xE0[\xA0-\xBF][\x80-\xBF]'.          # excluding overlongs
        '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'.   # straight 3-byte
        '|\xED[\x80-\x9F][\x80-\xBF]'.          # excluding surrogates
        '|\xF0[\x90-\xBF][\x80-\xBF]{2}'.       # planes 1-3
        '|[\xF1-\xF3][\x80-\xBF]{3}'.           # planes 4-15
        '|\xF4[\x80-\x8F][\x80-\xBF]{2}'.       # plane 16
        ')*$/';
Περισσότερα για square brackets σε regex's, εδώ.

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Περιορισμος τιμων σε πεδίο φόρμας

Δημοσίευση από majuranus » 24 Ιουν 2010 12:04

ευχαριστώ πολύ πάντως

st025
Δημοσιεύσεις: 1
Εγγραφή: 18 Αύγ 2010 21:46

Περιορισμος τιμων σε πεδίο φόρμας

Δημοσίευση από st025 » 10 Οκτ 2010 18:47

majuranus έγραψε:ευχαριστώ πολύ πάντως
Καλησπέρα,
Και εγώ έχω ένα παρόμοιο προβληματάκι.
Θέλω να επιτρέψω αλφαβητικούς χαρακτήρες μόνο (είτε ελληνικούς, είτε αγγλικούς) αλλά και τόνους. Το τελευταίο, δεν το έχω καταφέρει ακόμα.
Καμμία ιδέα πως γίνεται? Ψάχνω στο google και δεν μπορώ να βρω κάτι.
Αν δεν τα καταφέρω θα κάνω έλεγχο της φόρμας μόνο αν είναι κενή ή όχι αλλά δεν είναι σωστό...
Ο κώδικας που χρησιμοποιώ είναι:

Κώδικας: Επιλογή όλων

unction isAlphabet(elem, helperMsg){
	var alphaExp = /^[α-ωΑ-Ω-a-zA-Z ']+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}



[/quote]

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες