PalleMedlem sedan apr. 20003 174 inlägg Använder en regexp-funktion i ett textfält för att det endast skall användas siffror i fältet,
om jag skriver en bokstav så försvinner den - korrekt. Men värdet blir ändå mer än "inget"..
[red]<input type="text" name="bar" onkeyup="this.value=this.value.replace(/\D/g,'');" />[/red]
Jag använder sedan en annan funktion för att kolla så att något värde postats i fältet,
tyvärr uppfylls alltid if-satsen hur jag än gör.
[red]if(document.foo.bar.value!=='') { alert('whatever..'); }[/red]
Förmodar att jag bör göra något med regexp-funktionen för att verkligen få den "tom".
Frågan är bara vad?
Peter SMedlem sedan dec. 20025 483 inlägg Hint: slarvfel nedan ;)
if(document.foo.bar.value![b]==[/b]'') { alert('whatever..'); }
:)
Visst du hindrar den från att ange en bokstav, men du kan fortfarande ange ett blanksteg el?
Och om variabeln innehåller ett blanksteg så får den ett värde som inte är null.
Dvs var = " ";
då har var ett värde som är 1 om du kör lenght(var) t ex.
:OO
dectgapMedlem sedan sep. 20021 655 inlägg
Peter S skrev:
Hint: slarvfel nedan ;)
if(document.foo.bar.value![b]==[/b]'') { alert('whatever..'); }
:)
Är det samma sak i JavaScript som PHP, att !== kontrollerar både innehåll och typ? alert('whatever..') körs alltså om document.foo.bar.value inte har samma värde eller typ som ''?
PalleMedlem sedan apr. 20003 174 inlägg Har även testat detta utan önskat resultat:
[red] onkeyup="re=/(\d*)/; re.exec(this.value); this.value=RegExp.$1;"[/red]
Peter: *gnuggar ögonen* Va?
Fredde: Jag kan göra mellanslag, men det tas genast bort av funktionen och problemet kvarstår.
if(document.foo.bar.value!=='') { alert('whatever..'); }
om du använder istället
if(document.foo.bar.value!=null) { alert('whatever..'); }
fungerar det bättre?? :q
Peter SMedlem sedan dec. 20025 483 inlägg dectgap: Korrekt.
Skall även passa på att rätta mig själv lite grand. Strikt sagt är det inte fel att skriva !== i detta fall, dock redundant eftersom typerna ändå är ekvivalenta.
Utöver det fungerar skriptet iallafall för mig.
Palle: Om det är meningen att användaren skall göras uppmärksam när det ej är något värde i fältet kan du ta bort !-operatorn från if-satsen.
:)
PalleMedlem sedan apr. 20003 174 inlägg Aha, ok. Då förstår jag den biten. :bire
Nja, meningen är att funktionen i skarpt läge skall låsa ett annat fält om något värde finns.
Som det är nu låses fältet, men det låses inte upp igen om man plockar bort värdena.
Hängde ni med på min invecklade förklaring? ;)
[red] function diss(){
if(document.foo.bar.value!=null){
document.foo.fbbf.disabled=false;
} else {
document.foo.fbbf.disabled=true;
}
}[/red]
Tillägg: Fältet låses heller inte upp om man t.ex anger en bokstav som sedan regexp-funktionen tar bort..
Peter SMedlem sedan dec. 20025 483 inlägg function diss(){
if(document.foo.bar.value.length == 0){
document.foo.fbbf.disabled=false;
} else {
document.foo.fbbf.disabled=true;
}
}
...
<input type="text" name="bar" onkeyup="this.value=this.value.replace(/\D/g,''); diss()" />
:)
PalleMedlem sedan apr. 20003 174 inlägg Jo, serru.. den har jag redan testat. ;) :bire
Till saken är att det finns fler textfält som heter bar,
och då fungerar det tyvärr inte med value.length.
:(
Peter SMedlem sedan dec. 20025 483 inlägg Då skulle din tidigare kod resultera i ett "undefined". Om det nu är så att du har fler fält med namnet "bar" så kan du göra så här:
if (document.forms["foo"].elements["bar"][[b]index[/b]].value.length == 0)
// ...
Där index är det fält i "bar"-hierarkin som representerar ditt önskade.
:)
dectgapMedlem sedan sep. 20021 655 inlägg
Palle skrev:
Till saken är att det finns fler textfält som heter bar,
och då fungerar det tyvärr inte med value.length.
Men du kan väl inte gärna ha flera textfält med samma namn?
Annars kan du ju skicka "this.value.length" som argument till diss().
PalleMedlem sedan apr. 20003 174 inlägg Peter: Den koden var bara en dummy som jag testade med. Ska göra ett försök ikväll igen, nu är det dags för annat sköjj.. :OO ;)
dectgap: Uh´jo, det går utmärkt. Skapar arrayer i asp med dessa värden sedan, då är dem komma-separerade värdena utmärkta och spar tid.
Tack så länge! :bire