Gå til innhold

Form-script: markere flere checkboxer som checked og textreplace.


Anbefalte innlegg

Hei,

 

jeg er på jakt etter et javscript som kan gjøre alle checkboxene til checked. I tillegg til å flytte verdien fra bALLv til b1v, b2v, b3v osv (gjerne alle som heter noe med b<tall>v). Dette skal gjøres når en trykker på oppdater-linken.

<input type="checkbox" name="bALL" /> <input type="text" name="bALLv" value="" /> <a href="javscript: do('update');">Oppdater</a><br />
1: <input type="checkbox" name="b1" /> <input type="text" name="b1v" value="abc" /><br />
2: <input type="checkbox" name="b2" /> <input type="text" name="b2v" value="abc" /><br />
3: <input type="checkbox" name="b3" /> <input type="text" name="b3v" value="abc" />

 

Takk for all hjelp. :)

Lenke til kommentar
Videoannonse
Annonse

Gitt at du alltid legger til input med text og en checkbox etter formelen over:

 

<form action="">
<input type="checkbox" name="bALL" /> <input type="text" name="bALLv" value="" /> <a onClick="updateFrom(this.parentNode)" href="#">Oppdater</a><br />
1: <input type="checkbox" name="b1" /> <input type="text" name="b1v" value="abc" /><br />
2: <input type="checkbox" name="b2" /> <input type="text" name="b2v" value="abc" /><br />
3: <input type="checkbox" name="b3" /> <input type="text" name="b3v" value="abc" />
</form>

function updateFrom(e){

var inputs = e.getElementsByTagName('input');
var chckMaster = inputs[0].checked;
var txtMaster = inputs[1].value;

//tellervariabler deklareres utenfor løkke for å spare prosessorkraft om inputs-arrayen skulle bli enorm.
var y = inputs.length;
var i = 0;

for(i; i<y; i++){

	//If setningen vil oscillere mellom par- og oddetall i inputs arrayen for å oppdatere elementene etter sin plass. Dette fordrer at strukturen er identisk til den over men med eventuelt flere forekomster av bN og bNv.

	if(i>1 && i%2-1){ //2,4,6 ... 2n
		inputs[i].checked=chckMaster;
	} else if (i>1 && i%2) { //3,5,7 ... 2n+1
		inputs[i].value=txtMaster;
	} 
}
}

 

Merk at funksjonen tar utgangspunkt i this.parentNode som blir <form>-elementet.

Endret av cbastus
Lenke til kommentar

Hmm, jeg har en del andre inputs, så om du hadde orket - kunne du ha gjort slik at den kun endrer verdien for inputs med name="b<int>v"? Jeg har ingen flere checkboxer i koden, så den kan godt sette alle checkboxene i koden som checked.

 

Takk for hjelpen!

Lenke til kommentar

Antar et Regular Expression (RegExp) er beste løsning:

 

var exp = new RegExp("^b\d+v$ ");

"finne alle input"

for("alle inputs"){
if(inputs[i].type = 'txt' && inputs[i].name.test(exp)){
inputs[i].value = txtMaster;
}else if(input[i].type = 'checkbox'){
inputs[i].checked = chckMaster;
}
}

 

RegExp referanse

Endret av cbastus
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...