Avatar billede decrypto Nybegynder
27. april 2006 - 10:29 Der er 17 kommentarer og
1 løsning

Løb alle input felters name igennem, der indeholder en stren

Jeg har behov for at lave en funktion, der fx. kan løbe hele DOM igennem på en side, og finde alle de input felter, hvori en streng indgår i enten navnet eller id (jeg ved ikke, hvad der er nemmest), også returnere alle de værdier, der står i felterne i et array.

Jeg forestiller mig at jeg først får fat i alle input felterne, og derefter spørger dem om en streng indgår i deres id, hvis ja, så placere værdien af feltet i en array.

Er der nogen, der kam hjælpe?
Avatar billede elskermad.dk Nybegynder
27. april 2006 - 10:49 #1
Noget lignende (ganske utestet og sikkert med fejl (: )

var streng = 'navn_';
var felter = document.getElementsByTagname('input');
var vaerdier = new Array();

for(i=0;felter.length>i;i++) {
  if (felter[i].type == 'text') {
      if (felter[i].id.indexOf(streng)>0) {
        vaerdier[] = felter[i].value;
      }
  }
}
Avatar billede horsmark Nybegynder
27. april 2006 - 11:04 #2
<script type="text/javascript">

var oInputFieldsFound
function searchFormById( sFormId, sSearch ){
oInputFieldsFound = new Array()
var oForm = document.getElementById(sFormId)
var aInputFields = oForm.getElementsByTagName('input')
for( var i=0; i < aInputFields.length;i++){
  var currentObj = aInputFields[i]
  if ( currentObj.type == "text" ) {
    if ( currentObj.id && currentObj.value != ""){
        if ( currentObj.value.indexOf(sSearch) != -1)        oInputFieldsFound[oInputFieldsFound.length] = currentObj
    }
  }
}
checkSearch()
}

function checkSearch(){
    var sAlert = ""
    for( var i=0; i<oInputFieldsFound.length;i++){
        sAlert += " Input felt med id [" + oInputFieldsFound[i].id + "] value = " + oInputFieldsFound[i].value + "\n"
    }
    alert(sAlert)
}

</script>

<form id="test">
id="input_01" : <input type="text" id="input_01"><br>
id="input_abe": <input type="text" id="input_abe"><br>
id="input_02": <input type="text" id="input_02" value="input_02"><br>
id=undefined: <input type="text" name="halo" value="halo"><br>
id="input_03": <input type="text" id="input_03" value="input_03_abe"><br>
id=undefined: <input type="text" name="halo" value="halo"><br>
id=undefined: <input type="text" name="medtagikke" value="abe medtagikke abe abe"><br>

id="medtag": <input type="text" id="medtag" name="medtag" value="asdfabeABR"><br>
<br>
<input type="button" onClick="searchFormById('test', 'input')" value="søg efter 'input'"><br>
<input type="button" onClick="searchFormById('test', 'abe')" value="søg efter 'abe'">

</form>
Avatar billede horsmark Nybegynder
27. april 2006 - 11:05 #3
well ovenstående søger i indhold i value men kan rettes til at søge på entent id eller navn :)
Avatar billede decrypto Nybegynder
27. april 2006 - 11:17 #4
Jeg prøver og giver points efterfølgende, hvis jeg kan får det til at virke :o)
Avatar billede decrypto Nybegynder
27. april 2006 - 11:22 #5
hmmm. Det er ikke værdien i feltet jeg tester med en streng, men jeg skal bare have alle de felter, hvis id indeholder strengen.

fx
var streng = "abe";
<input id="abe1" name="abe1" value ="0" ..... />

Giv mig alle input felter, hvor id er noget med abe, eller hvis det er besværligt, så giv mig værdien
Avatar billede decrypto Nybegynder
27. april 2006 - 11:23 #6
Hov, jeg kan se i koden at det er netop det du gør....prøver lige at teste igen....
Avatar billede decrypto Nybegynder
27. april 2006 - 11:25 #7
Hmmm, det ser lidt stort ud, kan du fortælle mig hvordan jeg kan finde alle de input felter, hvori en streng indgår i id?
Avatar billede decrypto Nybegynder
27. april 2006 - 11:27 #8
Ahh det kan jeg se at du gør her ->

if ( currentObj.value.indexOf(sSearch) != -1)       
oInputFieldsFound[oInputFieldsFound.length] = currentObj
Avatar billede horsmark Nybegynder
27. april 2006 - 11:32 #9
prøv at rette dette til:

    if ( currentObj.id && currentObj.value != ""){
        if ( currentObj.value.indexOf(sSearch) != -1)        oInputFieldsFound[oInputFieldsFound.length] = currentObj
    }

til ...

    if ( currentObj.id || currentObj.name ){
        if ( currentObj.id && currentObj.id.indexOf(sSearch) != -1){
          oInputFieldsFound[] = currentObj
        } else if ( currentObj.name && currentObj.name.indexOf(sSearch) != -1) ){
          oInputFieldsFound[] = currentObj
        }
    }
Avatar billede horsmark Nybegynder
27. april 2006 - 11:33 #10
eller blot
        if ( currentObj.id && currentObj.id.indexOf(sSearch) != -1){
          oInputFieldsFound[] = currentObj
        } else if ( currentObj.name && currentObj.name.indexOf(sSearch) != -1) ){
          oInputFieldsFound[] = currentObj
        }
Avatar billede decrypto Nybegynder
27. april 2006 - 11:36 #11
Istedet for currentobj.value skal jeg spørge på id, hvordan gør jeg det??
Avatar billede decrypto Nybegynder
27. april 2006 - 11:39 #12
Okay, kan se at du har smidt flere forslag ind...prøver lige...
Avatar billede horsmark Nybegynder
27. april 2006 - 11:53 #13
Hmm der var en fejl dvs. at hvis id eksiterer men ikke indholder strengen så medtages elementet ikke - nedenstående checker for om  strenge eksisterer i ENTEN id eller name

bMatch = false
if ( currentObj.id && currentObj.id.indexOf(sSearch) != -1) bMatch = true
if ( currentObj.name && currentObj.name.indexOf(sSearch) != -1) ) bMatch = true
if ( bMatch ) oInputFieldsFound[] = currentObj
Avatar billede decrypto Nybegynder
27. april 2006 - 11:56 #14
okay, jeg kan se at jeg kun har behov for bruge id.
Avatar billede decrypto Nybegynder
27. april 2006 - 12:05 #15
Kan man filtrere nogle fra??? Fx er jeg ikke interesseret i de felter hvor min streng indgår, hvori strengen 'Total' også indgår.
Avatar billede decrypto Nybegynder
27. april 2006 - 12:06 #16
Kort sagt ligsom sql

Where streng = 'abe' and streng <> 'Total'
Avatar billede decrypto Nybegynder
27. april 2006 - 12:48 #17
Jeg fik løst det sidste :o).

Tak for hjælpen.
Avatar billede horsmark Nybegynder
27. april 2006 - 14:10 #18
superduper :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester