Μορφή τηλεφώνου. Πώς να καλέσετε έναν αριθμό επέκτασης από ένα κινητό τηλέφωνο; Αλλαγή δεδομένων διεύθυνσης στο Aliexpress

Ηλεκτρονική 20.04.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Ένας σωστά γραμμένος αριθμός τηλεφώνου βοηθά τον πελάτη ή τον φίλο σας να τα βγάλει πέρα ​​χωρίς ταλαιπωρία. Αν ενδιαφέρεστε για το πώς θα σας αναζητήσει κάποιος, δώστε προσοχή σε αυτό το θέμα. Ρεκόρ αριθμοί τηλεφώνουέχει αλλάξει για περισσότερα από εκατό χρόνια από την εφεύρεση του τηλεφώνου, όπως και οι ίδιοι οι αριθμοί (για παράδειγμα, μέχρι το 1968, οι αριθμοί τηλεφώνου στην ΕΣΣΔ γράφονταν με γράμματα).

Εν συντομία σχετικά με την καταγραφή ρωσικών αριθμών Ας πάμε βαθύτερα. Από πού να ξεκινήσετε τον αριθμό; +7 ή 8

Η καταγραφή ρωσικών (και, παρεμπιπτόντως, Καζακικών και Αμπχαζιανών) αριθμών ξεκινά με τον κωδικό χώρας: +7. Η Ρωσία και το Καζακστάν κληρονόμησαν τα επτά από την ΕΣΣΔ (το ξέρατε διεθνής κωδικόςΗ ΕΣΣΔ ήταν +7;). Και το οκτώ είναι ο κωδικός πρόσβασης μεγάλων αποστάσεων που υιοθετήθηκε στην ΕΣΣΔ, τον οποίο εξακολουθούμε να χρησιμοποιούμε σε σταθερά τηλέφωνα. Για διεθνείς κλήσεις από σταθεράκαλούμε 8 10. Οι κανόνες πρόσβασης σε μια διεθνή γραμμή είναι διαφορετικοί σε όλες τις χώρες:

Δηλαδή, όταν γράφετε τον αριθμό με ένα οκτώ, θα πρέπει να εξηγήσετε στον αλλοδαπό ότι, πρώτα, πρέπει να τηλεφωνήσει στη Ρωσία (και όχι στο Βιετνάμ ή Νότια Κορέα, του οποίου οι αριθμοί τηλεφώνου αρχίζουν με οκτώ), δεύτερον, ότι δεν χρειάζεται να καλέσει καθόλου το οκτώ, αλλά αντί να καλέσει επτά.

Επίσης, δεν θα μπορείτε να καλέσετε το σπίτι από το εξωτερικό πληκτρολογώντας έναν αριθμό χρησιμοποιώντας τον αριθμό οκτώ. Γι' αυτό στο δικό μου σημειωματάριοΞεκινάω τους αριθμούς με τον κωδικό χώρας.

Είναι ενδιαφέρον ότι στη Λευκορωσία (και σε ορισμένες άλλες χώρες της πρώην Ένωσης) διατηρήθηκε επίσης η αρχή της υπεραστικής πρόσβασης που υπήρχε στην ΕΣΣΔ. Δηλαδή, ο ιδιοκτήτης ενός διαδικτυακού καταστήματος της Λευκορωσίας που υπέδειξε τον αριθμό μετά το οκτώ θα δυσκολέψει τη ζωή των πιθανών πελατών του από τη Ρωσία. Απλώς δεν θα μπορούν να περάσουν εκτός εάν σημειώσουν ότι το κατάστημα βρίσκεται σε άλλη χώρα. Τι πρέπει να κάνω; Ξεκινήστε τον αριθμό με τον κωδικό χώρας:

Πού να βάλω παρενθέσεις σε έναν αριθμό τηλεφώνου;

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

Εισαγωγή Οι τοποθεσίες Web απαιτούν την εισαγωγή πληροφοριών αριθμού τηλεφώνου. Έτυχε κάθε χώρα να έχει το δικαίωμα να θεσπίσει τους δικούς της κανόνες κλήσης και μήκος αριθμού, με αποτέλεσμα μεταξύ των κατοίκων διαφορετικές χώρεςΑπό καιρό σε καιρό, δημιουργείται σύγχυση: ορισμένοι συνηθίζουν να υποδεικνύουν τον αριθμό με το πρώτο ψηφίο 8, άλλοι με το πρώτο ψηφίο 0 και άλλοι με το σύμβολο + Ανασκόπηση των υπαρχουσών λύσεων, προκειμένου να επιλυθεί με κάποιο τρόπο η πολυπλοκότητα που έχει προκύψει και φέρτε τους αριθμούς σε ενοποιημένη μορφή, υπάρχουν 3 κύριες λύσεις:
  • Ζητείται από τον χρήστη να εισαγάγει τον αριθμό χρησιμοποιώντας μια μάσκα εισαγωγής. Πλεονέκτημα: Η καθαρή εμφάνιση του αριθμού ελαχιστοποιείται πιθανά σφάλματαστο δωμάτιο. Μειονέκτημα: κάθε χώρα έχει τη δική της ορθογραφία και μήκος αριθμού.
  • Ο χρήστης καλείται να επιλέξει τη χώρα ξεχωριστά και να εισαγάγει τον υπόλοιπο αριθμό ξεχωριστά. είναι δυνατό με χρήση μάσκας εισόδου. Πλεονέκτημα: η δυνατότητα χρήσης διαφορετικών μασκών εισαγωγής για διαφορετικές χώρες (καθώς και περιοχές εντός μιας χώρας). Μειονεκτήματα: ο κατάλογος των χωρών (και των περιοχών σε κάθε χώρα) μπορεί να είναι μεγάλος. ο αριθμός τηλεφώνου παύει να υπάρχει ως ενιαίο σύνολο (ή απαιτείται προεπεξεργασία πριν από την αποθήκευση και εμφάνιση του αριθμού).
  • Τοποθετήστε ένα σύμβολο + μπροστά από τον αριθμό (εκτός της εισαγωγής) και επιτρέψτε την εισαγωγή μόνο αριθμών. Πλεονεκτήματα: ευκολία υλοποίησης. Μειονέκτημα: έλλειψη οπτικής απεικόνισης του αριθμού.
  • Προτεινόμενη λύση Ως αποτέλεσμα, αποφασίστηκε να τροποποιηθεί η συνήθης μάσκα εισαγωγής έτσι ώστε να αλλάζει σύμφωνα με την τρέχουσα τιμή του αριθμού. Επιπλέον, καθώς εισάγετε τον αριθμό, θα σας ζητηθεί να εμφανίσετε το όνομα της αναγνωρισμένης χώρας. Αυτή η προσέγγιση, υποκειμενικά, θα πρέπει να λύσει όλες τις αδυναμίες των λύσεων που αναφέρονται παραπάνω.

    Λαμβάνοντας υπόψη το γεγονός ότι ο αριθμός των χωρών στον κόσμο είναι σχετικά μικρός, αποφασίστηκε να καταρτιστεί μια λίστα με μάσκες εισόδου για όλες τις χώρες. Ως πηγή χρησιμοποιήθηκαν πληροφορίες που δημοσιεύτηκαν στον ιστότοπο της Διεθνούς Ένωσης Τηλεπικοινωνιών.

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

    Υλοποίηση λογισμικού Η υλοποίηση jquery.inputmask, η οποία αναφέρθηκε πολλές φορές στο Habrahabr, χρησιμοποιήθηκε ως ο πυρήνας της μάσκας εισόδου. Αυτή η προσθήκη αυτή τη στιγμή αναπτύσσεται ενεργά και, επιπλέον, έχει σχεδιαστεί με τέτοιο τρόπο ώστε να είναι αρκετά εύκολο να γράψετε επεκτάσεις για αυτό. Ωστόσο, σε αυτό το πρόβλημα αποδείχθηκε ότι ήταν σχεδόν αδύνατο να γραφτεί μια τέτοια επέκταση. Δεν τροποποίησα ή ξαναέγραψα το αρχικό πρόσθετο για να ταιριάζει στις ανάγκες μου, επειδή... συνεχίζει ο συγγραφέας του ενεργή εργασίαπάνω από την επέκταση της λειτουργικότητας, με αποτέλεσμα η εφαρμογή των τροποποιήσεών μου να αποδειχθεί προβληματική. Ως εκ τούτου, έπρεπε να γράψω ένα πρόσθετο πρόσθετο πάνω από τον κύριο πυρήνα, το οποίο παρακολουθεί (συν παρεμποδίζει) τις εξωτερικές επιρροές και κάνει τροποποιήσεις δεδομένων. Για να εφαρμόσουμε τους δικούς μας χειριστές για εξωτερικές επιρροές πριν από τους χειριστές του κύριου πρόσθετου, χρησιμοποιήσαμε το πρόσθετο jquery.bind-first βιβλιοθήκης Ταξινόμηση επιτρεπόμενων μάσκας εισόδου For σωστή επιλογήτην πιο κατάλληλη μάσκα εισαγωγής, ολόκληρο το σετ μασκών πρέπει να είναι προ-ταξινομημένο με έναν ιδιαίτερο τρόπο. Κατά την ανάπτυξη κανόνων ταξινόμησης, υιοθετήθηκαν οι ακόλουθες συμβάσεις:
  • Όλοι οι χαρακτήρες στη μάσκα εισαγωγής χωρίζονται σε 2 τύπους: σημαντικούς χαρακτήρες(στην περίπτωσή μου αυτό είναι το σύμβολο #, που σημαίνει έναν αυθαίρετο αριθμό, και οι αριθμοί 0-9) και τα σύμβολα διακοσμητή (όλα τα άλλα).
  • Μια άλλη διαίρεση χαρακτήρων στη μάσκα εισαγωγής είναι οι χαρακτήρες μπαλαντέρ (στην περίπτωσή μου το σύμβολο #) και όλοι οι άλλοι.
  • Το αποτέλεσμα ήταν ακολουθώντας τους κανόνεςταξινομημένα κατά σειρά εφαρμογής:

  • Κατά τη σύγκριση 2 μάσκας εισαγωγής χαρακτήρα προς χαρακτήρα, λαμβάνονται υπόψη μόνο σημαντικοί χαρακτήρες (όχι διακοσμητές).
  • Οι διαφορετικοί χαρακτήρες μπαλαντέρ αντιμετωπίζονται ως ίσοι και άλλοι σημαντικοί χαρακτήρες συγκρίνονται με βάση τον κώδικά τους.
  • Τα σύμβολα χωρίς πρότυπο είναι πάντα μικρότερα από τα σύμβολα προτύπου και, ως εκ τούτου, τοποθετούνται ψηλότερα.
  • Όσο μικρότερο είναι το μήκος σημαντικών χαρακτήρων στη μάσκα εισόδου, τόσο μικρότερη θεωρείται η μάσκα εισόδου και τοποθετείται ψηλότερα.
  • Εύρεση κατάλληλης μάσκας εισαγωγής Κατά τη σύγκριση του κειμένου εισαγωγής με την επόμενη μάσκα από την ταξινομημένη λίστα, λαμβάνονται υπόψη μόνο οι σημαντικοί χαρακτήρες κάθε μάσκας. Εάν μια γραμμή είναι μεγαλύτερη από μια μάσκα εισόδου, παρόλο που όλοι οι προηγούμενοι χαρακτήρες έχουν περάσει τη δοκιμή, η μάσκα εισαγωγής θεωρείται άκυρη. Εάν το κείμενο εισόδου ταιριάζει με πολλές μάσκες εισόδου, επιστρέφεται η πρώτη. Στη συνέχεια, στη μάσκα που βρέθηκε, όλοι οι σημαντικοί χαρακτήρες (συμπεριλαμβανομένων των μη προτύπων) αντικαθίστανται από ένα πρότυπο, το οποίο είναι ένας συνδυασμός όλων των χαρακτήρων που επιτρέπεται από οποιονδήποτε από τους χαρακτήρες του προτύπου Επεξεργασία και υποκλοπή συμβάντων για την αποφυγή διενέξεων Οι χειριστές συμβάντων του κύριου πυρήνα της μάσκας εισόδου, παρεμποδίζονται τα ακόλουθα συμβάντα:
    • keydown - πληκτρολογήσεις backspace και διαγραφής παρακολουθούνται για αλλαγή της τρέχουσας μάσκας εισαγωγής προτού ο κύριος χειριστής αφαιρέσει έναν χαρακτήρα από το κείμενο. Επιπλέον, το πάτημα του πλήκτρου Εισαγωγή, το οποίο αλλάζει τη λειτουργία εισαγωγής κειμένου, παρακολουθείται για συγχρονισμό.
    • πάτημα πλήκτρων - επειδή ο χαρακτήρας που εισαγάγατε ενδέχεται να μην επιλυθεί από την αρχική μάσκα εισαγωγής (καθώς όλοι οι σημαντικοί χαρακτήρες σε αυτήν αντικαθίστανται με μπαλαντέρ), είναι απαραίτητο να ελέγξετε νέα γραμμήνα ικανοποιήσει μία από τις επιτρεπόμενες μάσκες. Εάν δεν υπάρχουν τέτοιες μάσκες, τότε η εισαγωγή χαρακτήρων απορρίπτεται, διαφορετικά, η μάσκα εισόδου ενημερώνεται, μετά την οποία το συμβάν μεταβιβάζεται στον χειριστή του πυρήνα.
    • επικόλληση , εισαγωγή - επικόλληση κειμένου από το πρόχειρο. Πριν από τη μεταφορά της επεξεργασίας στον πυρήνα, επιλέγεται μια μάσκα εισόδου για τη συμβολοσειρά που προκύπτει από την επικόλληση κειμένου από το πρόχειρο. Εάν δεν μπορεί να βρεθεί η μάσκα εισαγωγής, το κείμενο περικόπτεται χαρακτήρα προς χαρακτήρα από το τέλος μέχρι το κείμενο να ταιριάζει με τουλάχιστον μία μάσκα εισαγωγής. Μια παρόμοια λειτουργία εκτελείται κατά τη διόρθωση κειμένου σε ένα πεδίο εισαγωγής καλώντας τη συνάρτηση val(), καθώς και κατά την προετοιμασία μιας μάσκας εισόδου εάν εφαρμόζεται σε ένα μη κενό πεδίο εισαγωγής.
    • dragdrop, η επεξεργασία απόθεσης είναι παρόμοια με το συμβάν επικόλλησης.
    • θολούρα - πρόσθετη επεξεργασίασε περίπτωση που η λειτουργία καθαρισμού κειμένου είναι ενεργοποιημένη όταν χάνεται η εστίαση, εάν δεν ικανοποιεί τη μάσκα εισαγωγής. Αυτό το συμβάν αναχαιτίζεται μετά τον κύριο χειριστή, σε αντίθεση με τα προηγούμενα.

    Όλα τα συμβάντα αναρτώνται στο χώρο της μάσκας εισόδου. Αυτό αποφεύγει τη λανθασμένη συμπεριφορά κατά την κλήση της μάσκας εισόδου μετά την προετοιμασία του πρόσθετου (καθώς ο πυρήνας αφαιρεί όλους τους προηγουμένως εγκατεστημένους χειριστές στο χώρο μάσκας εισόδου κατά την προετοιμασία).

    Παράδειγμα χρήσης Μορφή λίστας μάσκας Μια λίστα μάσκας είναι ένας πίνακας αντικειμένων JavaScript, κατά προτίμηση με το ίδιο σύνολο ιδιοτήτων. Τουλάχιστον μία ιδιότητα που περιέχει μια μάσκα εισόδου πρέπει να υπάρχει για όλα τα αντικείμενα πίνακα. Το όνομα της παραμέτρου που περιέχει τη μάσκα μπορεί να είναι αυθαίρετο. Παρακάτω είναι ένα τμήμα ενός τέτοιου πίνακα:
    [ … ( "μάσκα": "+7(###)###-##-##", "cc": "RU", "name_en": "Russia", "desc_en": "", " name_ru": "Russia", "desc_ru": "" ), ( "μάσκα": "+250(###)###-###", "cc": "RW", "name_en": " Ρουάντα", "desc_en": "", "name_ru": "Rwanda", "desc_ru": "" ), ( "μάσκα": "+966-5-####-####", "cc ": "SA", "name_en": "Σαουδική Αραβία", "desc_en": "mobile", "name_ru": " Σαουδική Αραβία", "desc_ru": "κινητό" ), ( "μάσκα": "+966-#-###-####", "cc": "SA", "name_en": "Σαουδική Αραβία", " desc_en": "", "name_ru": "Saudi Arabia", "desc_ru": "" ), … ] Παράμετροι σύνδεσης plugin Πριν από τη σύνδεση, πρέπει να φορτώσετε και να ταξινομήσετε τη λίστα με τις μάσκες. Αυτό γίνεται εκτελώντας την ακόλουθη συνάρτηση :
    $.masksSort = συνάρτηση (MaskList, defs, match, key)
    • maskList - ένας πίνακας αντικειμένων που αποθηκεύει μάσκες εισόδου (τεμάχιο αντικειμένου βλέπε παραπάνω).
    • defs - μια σειρά από χαρακτήρες μπαλαντέρ (στην περίπτωσή μου είναι το σύμβολο #).
    • αγώνας - κανονική έκφραση, περιγράφοντας σημαντικούς χαρακτήρες (στην περίπτωσή μου αυτό είναι /|#/);
    • κλειδί είναι το όνομα της παραμέτρου αντικειμένου πίνακα που περιέχει τη μάσκα εισόδου.

    Όταν συνδεθεί, το πρόσθετο αποστέλλεται ειδικό αντικείμενο, περιγράφοντας το έργο του. Αυτό το αντικείμενοπεριέχει το ακόλουθο σύνολο παραμέτρων:

    • inputmask - ένα αντικείμενο που περιέχει παραμέτρους που μεταβιβάζονται στην κύρια προσθήκη μάσκας εισόδου.
    • αντιστοίχιση - μια τυπική έκφραση που περιγράφει σημαντικούς χαρακτήρες, εξαιρουμένων των χαρακτήρων μπαλαντέρ.
    • αντικατάσταση - χαρακτήρας μπαλαντέρ στον οποίο θα αντικατασταθούν όλοι οι σημαντικοί χαρακτήρες. μπορεί να μην υπάρχει στους ορισμούς αντικείμενο του αντικειμένου μάσκας εισόδου.
    • λίστα - μια σειρά αντικειμένων που περιγράφουν μάσκες εισόδου.
    • listKey - όνομα της παραμέτρου μέσα στο αντικείμενο που αποθηκεύει τη μάσκα εισόδου.
    • onMaskChange - μια συνάρτηση που καλείται όταν ενημερώνεται η μάσκα εισόδου. η πρώτη παράμετρος είναι ένα αντικείμενο από τον πίνακα, η μάσκα εισαγωγής του οποίου αντιστοιχεί στο εισαγόμενο κείμενο και η δεύτερη παράμετρος είναι η ακρίβεια του ορισμού της μάσκας: true - η μάσκα εισόδου ταιριάζει πλήρως, false - επιπλέον χαρακτήρες πρέπει να εισαχθούν με αξιοπιστία ορίστε τη μάσκα.

    Για να αρχικοποιήσετε την προσθήκη, πρέπει να εφαρμόσετε τη μέθοδο inputmasks στο πεδίο εισαγωγής:
    $.fn.inputmasks = συνάρτηση (maskOpts, λειτουργία)

    • maskOpts - ένα αντικείμενο που περιγράφει τη λειτουργία του πρόσθετου.
    • λειτουργία - προαιρετική. V παρούσα στιγμήυποστηρίζεται η τιμή isCompleted - ως αποτέλεσμα, η μέθοδος επιστρέφει true εάν το κείμενο που αντιστοιχεί στην κατάλληλη μάσκα εισαχθεί πλήρως και ψευδές διαφορετικά.
    Παράδειγμα σύνδεσης plugin
    Μάσκα εισαγωγής var maskList = $.masksSort($.masksLoad("phone-codes.json"), ["#"], /|#/, "μάσκα");

    var maskOpts = ( μάσκα εισόδου: ( ορισμοί: ( "#": ( επικυρωτής: "", καρδινικότητα: 1 ) ), //clearIncomplete: true, showMaskOnHover: false, autoUnmask: true ), αντιστοίχιση: //, αντικατάσταση: "# ", list: maskList, listKey: "mask", onMaskChange: function(maskObj, ολοκληρωμένο) ( if (completed) ( var hint = maskObj.name_ru; if (maskObj.desc_ru && maskObj.desc_ru != "") ( hint + = " (" + maskObj.desc_ru + ")" ) $("#descr").html(hint else ($("#descr").html("Input mask"); ) $(this)); .attr("placeholder", $(this).inputmask("getemptymask") );

    Κορυφή