hariC11 Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 Καλησπέρα παιδιά, θα ήθελα να κάνω έλεγχο στην φόρμα μου, πριν την περάσω στην ΒΔ, με RegEx & Length Check. Έχω γράψει τον εξής κώδικα, και λειτουργεί σωστά, απλά δεν μπορώ να περάσω τα RegEx. function validateForm() { for (var i = 0; i < document.forms[0].elements.length; i++) { var pedio = document.forms[0].elements[i]; if(pedio.id.indexOf("Name")!=-1){ if (pedio.value.length < 5 || pedio.value.length > 35) { alert("Full Name must be 5-35 character long"); pedio.focus(); pedio.style.backgroundColor = "#997379"; return false; } } if ((pedio.id.indexOf("Phone") != -1) && (isNaN(pedio.value))) { alert("Phone is must contain only numbers"); pedio.focus(); pedio.style.backgroundColor = "#997379"; return false; } if(pedio.id.indexOf("Phone")!=-1){ if (pedio.value.length!=10) { alert("Phone must be 10 numbers"); pedio.focus(); pedio.style.backgroundColor = "#997379"; return false; } } } } Όσα αφορά τα RegEx, τα έχω βρει και είναι τα εξής, για το όνομα: var regex = /^[a-zA-Z ]$/; για το τηλέφωνο var regexPhone= /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/;
defacer Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 Γιατί κάνεις τέτοιες καστομιές το 2017..................................... Για το regex τι να πω, ότι λογικό είναι αφού χρησιμοποιείς πράγματα που δεν ξέρεις όπως φαίνεται πώς δουλεύουν; Για το name ας πούμε είναι φανερό πως μόνο αν βάλεις ένα χαρακτήρα μόνο του θα περάσει. Το phone τώρα, πρέπει κάποιος να το κάνει reverse engineer, να καταλάβει τι προσπαθεί να κάνει, μετά να σε ρωτήσει για να καταλάβει εσύ τι έχεις στο μυαλό σου, και μετά να βρει τη διαφορά που θα οδηγήσει στη λύση. Σόρι αλλά δε γίνεται δουλειά έτσι.
hariC11 Δημοσ. 24 Μαΐου 2017 Μέλος Δημοσ. 24 Μαΐου 2017 Γιατί κάνεις τέτοιες καστομιές το 2017..................................... Για το regex τι να πω, ότι λογικό είναι αφού χρησιμοποιείς πράγματα που δεν ξέρεις όπως φαίνεται πώς δουλεύουν; Για το name ας πούμε είναι φανερό πως μόνο αν βάλεις ένα χαρακτήρα μόνο του θα περάσει. Το phone τώρα, πρέπει κάποιος να το κάνει reverse engineer, να καταλάβει τι προσπαθεί να κάνει, μετά να σε ρωτήσει για να καταλάβει εσύ τι έχεις στο μυαλό σου, και μετά να βρει τη διαφορά που θα οδηγήσει στη λύση. Σόρι αλλά δε γίνεται δουλειά έτσι. Καστομίες; Απλός κώδικας είναι, λειτουργικός - λειτουργικός... Το όνομα λειτουργεί με την συνθήκη σωστά.. Είναι ελεγμένος ο κώδικας πριν δημοσιευτεί φίλε μου.. Δεν μπορώ να προσθέσω τα Regular Expression ώστε να φιλτράρει τα inputs..
defacer Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 1. Καστομιές 200% 2. Ο κώδικας είναι λειτουργικός αλλά άθλιος 3. Τι δεν μπορείς να προσθέσεις; if(!regex.test(pedio.value)) { ... }
defacer Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 Αυτή ακριβώς είναι η νοοτροπία με την οποία ο κώδικας θα είναι εξίσου άθλιος και σ' ένα χρόνο. Anyway, ελπίζω να βοήθησα λίγο, καλή συνέχεια.
hariC11 Δημοσ. 24 Μαΐου 2017 Μέλος Δημοσ. 24 Μαΐου 2017 Αυτή ακριβώς είναι η νοοτροπία με την οποία ο κώδικας θα είναι εξίσου άθλιος και σ' ένα χρόνο. Anyway, ελπίζω να βοήθησα λίγο, καλή συνέχεια. Μα φίλε μου, μην με απογοητεύεις και μετά την κάνεις.. Δώσε μου σε παρακαλώ 2-3 παραδείγματα γιατί θα είναι άχρηστος ο κώδικας και εγώ θα τον διορθώσω..
Predatorkill Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 Αμα το ονομα ειναι στα Ελληνικα τι γινεται; ή να περιεχει τελος παντων μη λατινικους χαρακτηρες; Αμα μπει ενας σουηδος να γραψει το ονομα του; Μπορεις να χρησιμοποιησεις και pattern μεσα στην html για να αποσυμφορησεις λιγο το script 1
defacer Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 Μα φίλε μου, μην με απογοητεύεις και μετά την κάνεις.. Δώσε μου σε παρακαλώ 2-3 παραδείγματα γιατί θα είναι άχρηστος ο κώδικας και εγώ θα τον διορθώσω.. Ξέρεις κάτι, αυτό σημαίνει ότι θα προσφέρω δωρεάν το χρόνο μου και τις γνώσεις μου. Πράγμα που απλά δε γουστάρω να κάνω όταν ξέρω ότι δε θα εκτιμηθεί. Αλλά επειδή το θεωρώ υποχρεωτικό να υπερασπίζεσαι μια κριτική άποψη που θεώρησες σημαντικό να διατυπώσεις, ορίστε μερικά random: #1 pedio.style.backgroundColor => τελείως λάθος νοοτροπία, δώσε CSS class instead #2 alert() focus() backgroundColor return false Όλα αυτά επαναλαμβάνονται συνέχεια, οπότε είναι προφανές ότι πρέπει να συγκεντρωθούν και να είναι κάπου γραμμένα μόνο μια φορά. #3 if(pedio.id.indexOf("ΧΧΧ")!=-1) Αυτό καταρχήν είναι προφανώς λάθος γιατί κάνει πολύ loose match με indexOf. Δε μπορώ να ξέρω τι είναι το σωστό, υπάρχει άνετα και η περίπτωση απλά να μη χρειάζεται. Διαφορετικά, υποθέτοντας πως τα ids είναι του στυλ X.Y ή Χ_Υ το σωστό θα ήταν να σπάζονται. Εν πάσει περιπτώσει, θέλεις στο τέλος να μπορείς να κάνεις comparison αποκλειστικά με === γιατί αυτό θα επιτρέψει περαιτέρω βελτιώσεις. #4 Και μιας που είμαστε εδώ, γιατί κοιτάει id και όχι name? Semantically αυτό είναι το σωστό. Τώρα είσαι υποχρεωμένος να έχεις παντού id και παντού να είναι ίδιο με το name => παραβίαση του DRY και πάλι. #5 Αφού διορθωθούν αυτά, το επόμενο βήμα είναι να κάνεις specify τους validators π.χ. σε ένα object, κάπως σαν var validators = { "Name": [ new StringLengthValidator(5, 35), new RegexValidator(.....) ], // κλπ }; και μετά ένα χαζό και DRY loop το οποίο δε θα χρειαστεί να ξαναπειράξεις ποτέ τα κάνει όλα. Καλή συνέχεια, μη ξεχάσεις να τον διορθώσεις ε; 1
MidSeniorDev Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 και πόσα χρήματα ήθελες δηλαδή για αυτά? ζήτημα να έκανες 10 λεπτά να τα γράψεις.. 1
defacer Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 Αυτά δεν τα κάνω για χρήματα. Όπως και ένα φιλί βέβαια, δε σημαίνει πως επειδή είναι τζάμπα όποιος θέλει παίρνει.
kaliakman Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 και πόσα χρήματα ήθελες δηλαδή για αυτά? ζήτημα να έκανες 10 λεπτά να τα γράψεις.. Δεν πληρώνεις την ώρα που του πήρε να τα γράψει. Πληρώνεις την ώρα που του πήρε να τα μάθει για να στα γράψει σε 10 λεπτά. 1
MidSeniorDev Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 να τον πληρώσουμε που έμαθε html, css και javascript των 10 λεπτών? για form validation??? θα μας τρελάνετε??? περίμενε λίγο να συνέλθω.. και ξαναρωτάω.. είστε σοβαροί??????????
k33theod Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 Όσον αφορά το regex του τηλεφώνου var regexPhone= /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/; Όταν έχεις μόνο ένα στοιχείο (την παρένθεση) δεν χρειάζεται να την κάνεις group δηλαδή [(] ή [)] αρκεί να την κάνεις escape \( ή \) επίσης το {0,1} μπορείς να το αντικαταστήσεις με το σύμβολο του προαιρετικού ? και το [0-9]μπορείς να το κάνεις \d όπως δεν έκανες escape στην παρένθεση μέσα στο group [(] έτσι δεν χρειάζεται να κάνεις escape και την τελεία [-\s.]
rafinos Δημοσ. 24 Μαΐου 2017 Δημοσ. 24 Μαΐου 2017 να τον πληρώσουμε που έμαθε html, css και javascript των 10 λεπτών? για form validation??? θα μας τρελάνετε??? περίμενε λίγο να συνέλθω.. και ξαναρωτάω.. είστε σοβαροί?????????? Ο άνθρωπος δεν μίλησε για χρήματα... μίλησε για χρόνο ο οποίος δεν θα εκτιμηθεί και καλά είπε γιατί μπήκες εσύ εδώ μέσα (όχι αυτός που δημιούργησε το post) και το παίζεις ιστορία. Πλέον αυτό το section του insomnia φαίνεται να είναι για τα μπάζα. Όπως αυτός είπε ότι δεν είναι καλός ο κώδικας και το τεκμηρίωσε έτσι και εσύ θα μπορούσες να κάνεις το ίδιο για το αντίθετο. Για κάν' το να σε δούμε. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα