|
| Undgå blanktegn og mellemrum osv. ? Fra : Martin Ploug |
Dato : 15-12-09 19:23 |
|
Hej
Jeg vil i JavaScript gerne lave et tjek
for, om et felt er tomt eller indeholder
blanktegn, mellemrum eller lign. i starten
(og i slutningen) af et felt.
Altså jeg vil gerne forhindre, at man
f.eks. bare kan indtaste nogle mellemrum
i et felt i stedet for at skrive noget.
Jeg ved, at man kan bruge nedenstående,
men synes ikke helt, at det er effektivt
nok. Findes der ikke en funktion lige som
trim funktionen i PHP?
http://php.net/manual/en/function.trim.php
Kan man bruge noget med indexof eller en
eller flere regular expresseion?
Findes der ikke en forholdsvis simpel og
effektiv medtode?
Eksempler (se borg fra evt. manglende /
ukorrekte syntakser - jeg har prøvet med
de rigtige):
if (form.felt.value ==" ")
if (form.felt.value ==" ")
if (form.felt.value ==null)
if (form.felt.length ==0)
Kan nogen evt. henvise til et færdigt
og velfungerende script, der gør tricket?
På forhånd tak.
Mvh. Martin
| |
Frank Damgaard (15-12-2009)
| Kommentar Fra : Frank Damgaard |
Dato : 15-12-09 20:26 |
|
Martin Ploug wrote:
> Hej
>
> Jeg vil i JavaScript gerne lave et tjek
> for, om et felt er tomt eller indeholder
> blanktegn, mellemrum eller lign. i starten
> (og i slutningen) af et felt.
> Altså jeg vil gerne forhindre, at man
> f.eks. bare kan indtaste nogle mellemrum
> i et felt i stedet for at skrive noget.
>
> Jeg ved, at man kan bruge nedenstående,
> men synes ikke helt, at det er effektivt
> nok. Findes der ikke en funktion lige som
> trim funktionen i PHP?
> http://php.net/manual/en/function.trim.php
>
> Kan man bruge noget med indexof eller en
> eller flere regular expresseion?
> Findes der ikke en forholdsvis simpel og
> effektiv medtode?
jo en regular expression test på blanktegn og lign.
http://www.regular-expressions.info/javascriptexample.html
http://www.javascriptkit.com/javatutors/redev2.shtml
http://www.javascriptkit.com/javatutors/redev3.shtml
f.eks.:
function check_spaces(t) {
var reS = new RegExp("(^\\s+$)|(^$)");
var v=t.txt1.value;
if ( v.match(reS) ) {
alert("ingen tomme felter tak!");
}
}
eksempel kaldes med:
Input: <input type="text" id="txt1" name="txt1">
<input type="button" name="chk" value="check" onclick=" check_spaces(this.form)">
replace funktionen kan bruges til at fjerne foranstillede og afsluttende blanktegn.
de tilhørende regular expressions er "^\\s+" og "\\s+$"
PS.
i ovenstående er brugt \\s i stedet for \s, da \ fortolkes i "" strenge i javascriptkode
og "\\" giver et enkelt "\".
| |
Stig Johansen (15-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 15-12-09 21:07 |
|
Martin Ploug wrote:
> Altså jeg vil gerne forhindre, at man
> f.eks. bare kan indtaste nogle mellemrum
> i et felt i stedet for at skrive noget.
I de systemer jeg har lavet, tester jeg bare på felt > '!'.
--
Med venlig hilsen
Stig Johansen
| |
Martin Ploug (15-12-2009)
| Kommentar Fra : Martin Ploug |
Dato : 15-12-09 21:16 |
|
Stig Johansen skrev:
> Martin Ploug wrote:
>
>> Altså jeg vil gerne forhindre, at man
>> f.eks. bare kan indtaste nogle mellemrum
>> i et felt i stedet for at skrive noget.
>
> I de systemer jeg har lavet, tester jeg bare på felt > '!'.
>
Hej Frank
Mange tak for dit eksempel og dine henvisninger.
Jeg kigger på det.
Stig
> I de systemer jeg har lavet, tester jeg bare på felt > '!'.
Hvad mener du, kan du give et eksempel?
Mvh. Martin
| |
Stig Johansen (16-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 16-12-09 02:00 |
|
Martin Ploug wrote:
> Stig
> > I de systemer jeg har lavet, tester jeg bare på felt > '!'.
>
> Hvad mener du, kan du give et eksempel?
var felt=document.getElementById('feltnavn') ;
if (felt.value > '!') {
feltet er ok, tjek evt. længde eller lign.
} else {
alert('feltet skal udfyldes'), eller lav baggunden rød, som jeg plejer at
bruge
}
--
Med venlig hilsen
Stig Johansen
| |
Frank Damgaard (16-12-2009)
| Kommentar Fra : Frank Damgaard |
Dato : 16-12-09 02:48 |
|
Stig Johansen wrote:
> Martin Ploug wrote:
>
>> Stig
>> > I de systemer jeg har lavet, tester jeg bare på felt > '!'.
>>
>> Hvad mener du, kan du give et eksempel?
>
> var felt=document.getElementById('feltnavn') ;
> if (felt.value > '!') {
> feltet er ok, tjek evt. længde eller lign.
> } else {
> alert('feltet skal udfyldes'), eller lav baggunden rød, som jeg plejer at
> bruge
> }
egentlig ganske smart , du sammenligner om første tegn i streng er større end
udsråbstegn (så måske felt.value > ' ' også kunne bruges ).
Dette har dog den lille ulempe:
Starter streng med blanktegn eller udråbstegn så får man fejl
også hvis det måske er tilladt input, f.eks: vil følgende også give fejl:
" denne tekst"
"! halløj !"
Det må så afhænge af sammenhængen om det er ok, eller at dette ikke accepteres.
Man bør af hensyn til brugeren komme med passende fejlmeldinger hvis input er forkert,
det er nemlig ikke altid indlysende for brugeren hvad der er forkert, specielt
et foranstillet blanktegn er ikke altid noget man opdager som bruger....
Så jeg vil normalt ikke anse foranstillede blanktegn som fejl, men foretrække
at fjerne dem hvis de er i vejen, de kan nemt fjernes med:
function rm_spaces(s) { // remove leading and trailing spaces
var reL = new RegExp("^\\s+");
var reT = new RegExp("\\s+$");
var v=s.replace(reL,"")
return v.replace(reT,"");
}
| |
Stig Johansen (16-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 16-12-09 11:10 |
|
Frank Damgaard wrote:
> Dette har dog den lille ulempe:
> Starter streng med blanktegn eller udråbstegn så får man fejl
> også hvis det måske er tilladt input, f.eks: vil følgende også give fejl:
>
> " denne tekst"
> "! halløj !"
>
> Det må så afhænge af sammenhængen om det er ok, eller at dette ikke
> accepteres.
Ja, men når jeg refererer til "systemer jeg har lavet", så er det ikke kun
webbaserede systemer.
I virkeligheden så bruger jeg:
"if trim(felt...)", men det er nogle helt andre sprog.
Jeg er også med på, at dit eksempel med "! halløj !", vgil give en positiv
response, men OP nævner ikke andet end 'blanke', så et andet alternativ jeg
bruger er:
if (feltværdi < '!') ....
I bund og grund handler det kun om at pre-validering af input, og jeg håber
virkelig, at input bliver valideret serverside.
--
Med venlig hilsen
Stig Johansen
| |
Gunnar Vestergaard (20-12-2009)
| Kommentar Fra : Gunnar Vestergaard |
Dato : 20-12-09 22:47 |
|
Stig Johansen skrev:
> I bund og grund handler det kun om at pre-validering af input, og jeg håber
> virkelig, at input bliver valideret serverside.
>
Ja der tog du ordene ud af munden på mig. Det var netop det spørgsmål,
jeg ville tilføje til denne tråd. Lad os spørge Martin, bliver input
også valideret serverside?
Mvh
Gunnar
| |
Martin (16-12-2009)
| Kommentar Fra : Martin |
Dato : 16-12-09 17:52 |
|
On 15-12-2009 19:23, Martin Ploug wrote:
> Hej
>
> Jeg vil i JavaScript gerne lave et tjek
> for, om et felt er tomt eller indeholder
> blanktegn, mellemrum eller lign. i starten
> (og i slutningen) af et felt.
> Altså jeg vil gerne forhindre, at man
> f.eks. bare kan indtaste nogle mellemrum
> i et felt i stedet for at skrive noget.
>
> Jeg ved, at man kan bruge nedenstående,
> men synes ikke helt, at det er effektivt
> nok. Findes der ikke en funktion lige som
> trim funktionen i PHP?
> http://php.net/manual/en/function.trim.php
Hvis der findes en PHP funktion som ikke lige eksisterer i javascript,
så er det et godt sted at kigge på
http://phpjs.org/functions/index
Så er det bare at søge, og vupti så finder man
http://phpjs.org/functions/trim:566
Så kan man jo klippe lidt rundt i funktionen, hvis man har lyst til det
- og lige netop denne funktion har ingen dependencies så det er
out-of-the-box.
| |
Frank Damgaard (17-12-2009)
| Kommentar Fra : Frank Damgaard |
Dato : 17-12-09 13:03 |
|
Martin wrote:
> On 15-12-2009 19:23, Martin Ploug wrote:
>> Hej
......
>> Jeg ved, at man kan bruge nedenstående,
>> men synes ikke helt, at det er effektivt
>> nok. Findes der ikke en funktion lige som
>> trim funktionen i PHP?
>> http://php.net/manual/en/function.trim.php
>
> Hvis der findes en PHP funktion som ikke lige eksisterer i javascript,
> så er det et godt sted at kigge på
> http://phpjs.org/functions/index
> Så er det bare at søge, og vupti så finder man
> http://phpjs.org/functions/trim:566
og ellers har javascript noget så "powerfull" som regular expressions
og der kan det laves på 1-2 linier, men her lidt ikke-optimeret:
function rm_spaces(s) { // remove leading and trailing spaces (trim)
var reL = new RegExp("^\\s+");
var reT = new RegExp("\\s+$");
var v=s.replace(reL,"")
return v.replace(reT,"");
}
| |
Martin Ploug (17-12-2009)
| Kommentar Fra : Martin Ploug |
Dato : 17-12-09 21:14 |
|
Hej alle
Mange tak for jeres kommentarer, løsningsforslag
og henvisninger. Jeg må have kigget grundigt på
det I har skrevet, og efterfølgende have rettet
min formluar.
Mvh. Martin
Frank Damgaard skrev:
> Martin wrote:
>> On 15-12-2009 19:23, Martin Ploug wrote:
>>> Hej
> ......
>>> Jeg ved, at man kan bruge nedenstående,
>>> men synes ikke helt, at det er effektivt
>>> nok. Findes der ikke en funktion lige som
>>> trim funktionen i PHP?
>>> http://php.net/manual/en/function.trim.php
>> Hvis der findes en PHP funktion som ikke lige eksisterer i javascript,
>> så er det et godt sted at kigge på
>> http://phpjs.org/functions/index
>> Så er det bare at søge, og vupti så finder man
>> http://phpjs.org/functions/trim:566
>
>
> og ellers har javascript noget så "powerfull" som regular expressions
> og der kan det laves på 1-2 linier, men her lidt ikke-optimeret:
>
> function rm_spaces(s) { // remove leading and trailing spaces (trim)
> var reL = new RegExp("^\\s+");
> var reT = new RegExp("\\s+$");
> var v=s.replace(reL,"")
> return v.replace(reT,"");
> }
>
>
| |
Rune Jensen (22-12-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-12-09 21:52 |
|
Martin Ploug skrev:
> Hej alle
>
> Mange tak for jeres kommentarer, løsningsforslag
> og henvisninger. Jeg må have kigget grundigt på
> det I har skrevet, og efterfølgende have rettet
> min formluar.
Her er en alternativ måde at se det på. Nogle (performance)tests af
forskellige trimming-former i JS:
http://blog.stevenlevithan.com/archives/faster-trim-javascript
MVH
Rune Jensen
| |
Stig Johansen (23-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 23-12-09 10:25 |
|
Rune Jensen wrote:
> Her er en alternativ måde at se det på. Nogle (performance)tests af
> forskellige trimming-former i JS:
> http://blog.stevenlevithan.com/archives/faster-trim-javascript
I forhold til den givne problemstilling handler det bare om at se om der er
'lovlige' tegn i inputfeltet.
For at tjekke det, behøves hverken trim eller diverse regex funktioner, blot
at se om der er 'lovlige' tegn.
En sådan funktion kan laves på nogle få linier JS, og kræver ikke
reallokering af memory (hvilket er 'dyrt').
Der er ingen grund til at inddrage samtlige 'whitespace' karakterer, blot at
der er noget > blank.
--
Med venlig hilsen
Stig Johansen
| |
N/A (23-12-2009)
| Kommentar Fra : N/A |
Dato : 23-12-09 15:51 |
|
| |
Rune Jensen (23-12-2009)
| Kommentar Fra : Rune Jensen |
Dato : 23-12-09 03:10 |
|
On 23 Dec., 10:25, Stig Johansen <wopr...@gmaill.com> wrote:
> Rune Jensen wrote:
> > Her er en alternativ måde at se det på. Nogle (performance)tests af
> > forskellige trimming-former i JS:
> > http://blog.stevenlevithan.com/archives/faster-trim-javascript
>
> I forhold til den givne problemstilling handler det bare om at se om der er
> 'lovlige' tegn i inputfeltet.
>
> For at tjekke det, behøves hverken trim eller diverse regex funktioner, blot
> at se om der er 'lovlige' tegn.
Nej, det er fordi der blev spurgt om en trimming-funktion. Javascript
har ingen trim, ejheller replace, så det er godt at have i sit script-
bibliotek. Faktisk burde de indføre en sådan funktion i selve JS, så
man ikke skal lede hver gang. Det er jo universelle funktioner.
MVH
Rune Jensen
| |
Frank Damgaard (23-12-2009)
| Kommentar Fra : Frank Damgaard |
Dato : 23-12-09 15:51 |
|
Rune Jensen wrote:
> On 23 Dec., 10:25, Stig Johansen <wopr...@gmaill.com> wrote:
>> Rune Jensen wrote:
>>> Her er en alternativ måde at se det på. Nogle (performance)tests af
>>> forskellige trimming-former i JS:
>>> http://blog.stevenlevithan.com/archives/faster-trim-javascript
>> I forhold til den givne problemstilling handler det bare om at se om der er
>> 'lovlige' tegn i inputfeltet.
>>
>> For at tjekke det, behøves hverken trim eller diverse regex funktioner, blot
>> at se om der er 'lovlige' tegn.
>
>
> Nej, det er fordi der blev spurgt om en trimming-funktion. Javascript
> har ingen trim, ejheller replace, så det er godt at have i sit script-
> bibliotek. Faktisk burde de indføre en sådan funktion i selve JS, så
> man ikke skal lede hver gang. Det er jo universelle funktioner.
Javascript har regular expression og i den sammenhæng en replace()
(og en match() ).
Regular expressions er ideel til at kontrollere vor gyldig input
(eller ugyldig input).
http://www.webreference.com/js/column5/methods.html
http://www.javascriptkit.com/jsref/regexp.shtml
http://www.w3schools.com/jsref/jsref_obj_regexp.asp
... men indrømmet regular expressions er måske kun noget for os gamle unix-hajer... ;)
| |
N/A (23-12-2009)
| Kommentar Fra : N/A |
Dato : 23-12-09 15:51 |
|
| |
|
|