webForumDet fria alternativet

Checkbox problem

9 svar · 480 visningar · startad av Cantona

CantonaMedlem sedan juni 200161 inlägg
#1

Nu behöver jag eran hjälp.
Låt säga att jag har 3 st checkboxar, jag skulle vilja kunna välja en eller flera boxar. När jag sedan skickar urlen så vill jag att strängen skall se ut på följande sätt:
poup.asp?val=1,2
Om jag nu har checkat checkbox 1 samt 2.

Alla små tips är välkommna så jag har någonting att börja med.
Självklart så vill jag kunna avmarkera checkboxarna.
Jag vill även att sidan inte laddas om när jag skickar iväg värdet.
<FORM NAME="FOO">
<input type="checkbox" NAME="1">
<input type="checkbox" NAME="2">
<input type="checkbox" NAME="3">
<input type="button" value="Öppna popup" OnClick="?">
</FORM>

CantonaMedlem sedan juni 200161 inlägg
#2

skickade till en dold iframe som tarhand om strängen så här

<%
strVAL = ""
For each item in request.form
If request.form(item) = "on" then
strVAL = strVAL & ","& item
end if
next
ANTAL = LEN(strVAL) - 1
strVAL = right(strVAL,ANTAL)

%>

<script language=javascript>
window.open('sida.asp?PROMPT=<%=strVAL%>','openit','width="500",height="500"')
</script>

inte snyggt men vad gör man :-)

Har ni några bättre tips så hör av er.

@ndersMedlem sedan juni 200026 914 inlägg
#3

Om du ger checkboxarna samma namn, blir resultatet en kommaseparerad värdelista.

<input type="checkbox" name="whatever" value="1"> 
<input type="checkbox" name="whatever" value="2"> 
<input type="checkbox" name="whatever" value="3">

Mvh

CantonaMedlem sedan juni 200161 inlägg
#4

whatever=1&whatever=2&whatever=3&whatever=4

@anders, är denna kommaseparerad :-)

GustavMedlem sedan jan. 2000681 inlägg
#5

Kan man kontrollera att minst en av kryssrutorna är ikryssade om man använder den här koden i ett vanligt formmail?

Så här:

<input TYPE="checkbox" NAME="Kursinriktning" VALUE="Buss">
<input TYPE="checkbox" NAME="Kursinriktning" VALUE="Gods">
<input TYPE="checkbox" NAME="Kursinriktning" VALUE="Taxi">

När jag klickar på "SKICKA" så vill jag att det ska komma upp en Alert-ruta som säger att man måste klicka i minst en av rutorna.

Hur gör man det?

Tack på förhand!

nitro2k01Medlem sedan aug. 20037 630 inlägg
#6

Lösning till Gustav's problem:

 
<script>

function checkCheckboxes(){
  var els = document.forms["foo"].elements, checkCounter = 0;

  for (i=0;i<els.length;i++){
    if(els[i].name == "bar"){
      if (els[i].checked)
        checkCounter ++;
    }
  }
  if (checkCounter > 0)
    return true;
  else{
    alert("Kryssa för åtminstone en av rutorna i gruppen bar.");
    return false;
  }
}

</script>

<form name="foo" onsubmit="return checkCheckboxes();">
Testgrupp:
<input TYPE="checkbox" NAME="test" VALUE="bar1">
<br />
Bar:
<input TYPE="checkbox" NAME="bar" VALUE="bar1">
<input TYPE="checkbox" NAME="bar" VALUE="bar2">
<input TYPE="checkbox" NAME="bar" VALUE="bar3">
<br />
<input TYPE="submit">
</form>
nitro2k01Medlem sedan aug. 20037 630 inlägg
#7

Med lite justeringar löste jag även cantonas problem. Elementet val innehåller en kommaformaterad lista med val.

 
<script>

function checkCheckboxes(){
  var els = document.forms["foo"].elements, checkCounter = 0;
  var checkoptions = new Array();
  for (i=0;i<els.length;i++){
    if(els[i].name == "bar"){
      if (els[i].checked)
      checkoptions[checkoptions.length] = els[i].value;
    }
  }
  els["val"].value = checkoptions.join(",");
  if (checkoptions.join(",").length > 0)
    return true;
  else{
    alert("Kryssa för åtminstone en av rutorna i gruppen bar.");
    return false;
  }
}

</script>

<form name="foo" onsubmit="return checkCheckboxes();">
Testgrupp:
<input TYPE="checkbox" NAME="test" VALUE="bar1">
<br />
Bar:
<input TYPE="checkbox" NAME="bar" VALUE="1">
<input TYPE="checkbox" NAME="bar" VALUE="2">
<input TYPE="checkbox" NAME="bar" VALUE="3">

<input TYPE="hidden" NAME="val" VALUE="">
<br />
<input TYPE="submit">
</form>
GustavMedlem sedan jan. 2000681 inlägg
#8

Tack så mycket!
Det funkar precis som jag vill.

Tack igen!

JAreMANNENMedlem sedan aug. 20001 698 inlägg
#9

nitro2k01 skrev:

Lösning till Gustav's problem:

 
<script>

function checkCheckboxes(){
  var els = document.forms["foo"].elements, checkCounter = 0;

  for (i=0;i<els.length;i++){
    if(els[i].name == "bar"){
      if (els[i].checked)
        checkCounter ++;
    }
  }
  if (checkCounter > 0)
    return true;
  else{
    alert("Kryssa för åtminstone en av rutorna i gruppen bar.");
    return false;
  }
}

</script>

<form name="foo" onsubmit="return checkCheckboxes();">
Testgrupp:
<input TYPE="checkbox" NAME="test" VALUE="bar1">
<br />
Bar:
<input TYPE="checkbox" NAME="bar" VALUE="bar1">
<input TYPE="checkbox" NAME="bar" VALUE="bar2">
<input TYPE="checkbox" NAME="bar" VALUE="bar3">
<br />
<input TYPE="submit">
</form>

Gammal tråd javisst, men behöver hjälp med liknande :)

Jag behöver exakt samma funktion fast mina checkboxar heter enligt följande:
pay_2004_06
pay_2004_07
pay_2004_08
pay_2004_09
osv..

Altså det är olika namn som ställer till det för mig...
Gemensamt är ju att alla checkboxar som ska kollas börjar på "pay_"
Tack på förhand..

mvh :)

SugarDaddyMedlem sedan apr. 20021 083 inlägg
#10

Jag hade ett liknande problem för ett tag sedan och hittade den här lösningen som funkar fint f mig iaf (har tyvärr ingen länk t forumet jag hittade det på):

function validateRadios(f) {
if (!f) return;
var currEl, radArray, e = 0;
while (f.elements[e]) {
currEl = f.elements[e++];
if (currEl.type == 'radio' && currEl.name) {
radArray = f.elements[currEl.name];
for (var r=0; r<radArray.length; ++r) {
if (radArray[r].checked) break;
}
if (r == radArray.length) {
alert('Du har glömt svara på en eller flera frågor');
currEl.focus();
return false;
}
}
}
return true;
}

Och sen onSubmit="return validateRadios(this);" i form-taggen.

Om jag har förstått dig rätt så har du samma problem som jag hade med flera grupper av radioknappar där de har samma namn inom varje grupp(?)
/Edit - dum i huvudet, läste radio istället f checkbox, fint.. :OO

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb