Avatar billede obhat Nybegynder
14. marts 2006 - 08:44 Der er 26 kommentarer og
1 løsning

Marker afkrydsningfelter

Jeg har en række afkrydsningsfelter, som jeg gerne vil have markeret på en gang, ved et klik og dernæst kunne slette disse poster på et slet alt klik, kan det laves med jave-script?
Avatar billede softspot Forsker
14. marts 2006 - 08:56 #1
Det kunne være noget i stil med dette:

<script type="text/javascript">
function changeStatus(ctlArray, status) {
  for(var i = 0; i < ctlArray.length; i++)
    ctlArray[i].checked = status;
}
</script>


<form>
  <input type="checkbox" name="chkTest">&nbsp;værdi 1<br>
  <input type="checkbox" name="chkTest">&nbsp;værdi 2<br>
  <input type="checkbox" name="chkTest">&nbsp;værdi 3<br>
  <input type="checkbox" name="chkTest">&nbsp;værdi 4<br>

  <input type="button" value="Vælg alle" onclick="changeStatus(this.form.chkTest,true)">
  <input type="button" value="Fravælg alle" onclick="changeStatus(this.form.chkTest,false)">
</form>
Avatar billede fennec Nybegynder
14. marts 2006 - 09:00 #2
eller sådan med en Alle checkbox (samme grundform som softspot's kode):

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function checkAll(objChk)
{   
    obj = objChk.form.chkBox
    for(f=0;f<obj.length;f++)
        obj[f].checked=objChk.checked;
}
//-->
</SCRIPT>
<form name="myForm" method="post">
<input type="Checkbox" name="all" onclick="checkAll(this)" value="OK">Alle<br>
<input type="Checkbox" name="chkBox" value="OK"><br>
<input type="Checkbox" name="chkBox" value="OK"><br>
<input type="Checkbox" name="chkBox" value="OK"><br>
<input type="Checkbox" name="chkBox" value="OK"><br>
<input type="Checkbox" name="chkBox" value="OK"><br>
</form>
Avatar billede obhat Nybegynder
14. marts 2006 - 09:51 #3
Hm. det skal sættet ind i noget ASP script med loop ?? et forslag?
Avatar billede softspot Forsker
14. marts 2006 - 09:53 #4
Kan du være lidt mere specifik ifht. hvad det er du ønsker som output?
Avatar billede fennec Nybegynder
14. marts 2006 - 09:55 #5
Og hvis du kunne smide loopkoden herind også ville det være fedt...
Avatar billede obhat Nybegynder
14. marts 2006 - 10:10 #6
Her er tabellen med loop, jeg vil gerne have et afkrydsningfelt ud for hver post og et slet alle felt.

Ved klik på slet post, slettes de makerede poster.



<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="da">
<title></title>
</head>

<body>

<table width="699" cellpadding="5" height="1">
  <tr>
    <td class="forside" vAlign="top" width="508" height="1">
      <table border="0" cellpadding="0" cellspacing="0" width="505">
        <tr>
          <td width="13"></td>
          <td width="469">
            <p align="center"><font face="Arial Black" size="3">infobakke</font>
            </p>
          </td>
          <td width="14"></td>
        </tr>
      </table>
      <table border="0" cellpadding="0" cellspacing="0" width="505">
        <tr>
          <td width="23">
            <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
          </td>
          <td width="65">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Status</font></b></td>
          <td width="130">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Modtager</font></b></p>
          </td>
          <td width="113">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Emne</font></b></p>
          </td>
          <td width="86">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Dato</font></b></p>
          </td>
          <td width="12">
            <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
          </td>
          <td width="32">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Slet</font></b></td>
          <td width="25">
            <p style="margin-top: 0; margin-bottom: 2">
           

           
          Alle
           
         
          </td>
        </tr>
<%

colortable = "#F5F4E9,#F5f4e9"
arrColors = split(colortable,",")
rowidx = 0

do while not rs.eof
  colIdx = rowIdx mod 2
%>         
<tr>
  <td width="23" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
  </td>
  <td width="65" bgcolor="<%=arrColors(colIdx)%>">
<b><font face="Verdana" size="1" color="#CC6699">
<p style="margin-top: 4; margin-bottom: 0">
...

</font></b>

  </td>
  <td width="130" bgcolor="<%=arrColors(colIdx)%>">
<b><font face="Verdana" size="1" color="#CC6699">
<p style="margin-top: 0; margin-bottom: 2">
...
</font></b>
  </td>
  <td width="113" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 3; margin-bottom: 0">
   
...
    </td>
  <td width="86" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 3; margin-bottom: 0">

...   
    </td>
  <td width="12" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
  </td>
  <td width="32" bgcolor="<%=arrColors(colIdx)%>"><p style="margin-top: 3; margin-bottom: 0">
...
  </td>
  <td width="25" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 0; margin-bottom: 2"> <input type="checkbox" name="C1" value="ON"> </td>
</tr>
<%
  rowidx = rowidx + 1
  rs.movenext
  counter = counter + 1
loop
%>
Avatar billede obhat Nybegynder
14. marts 2006 - 15:27 #7
Det kan måske ikke laves bare sådan?
Avatar billede fennec Nybegynder
14. marts 2006 - 15:39 #8
Noget i denne stil:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="da">
<title></title>
</head>

<body>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function checkAll(objChk)
{   
    obj = objChk.form.C1
    for(f=0;f<obj.length;f++)
        obj[f].checked=objChk.checked;
}
//-->
</SCRIPT>
<form name="myForm" method="post">
<table width="699" cellpadding="5" height="1">
  <tr>
    <td class="forside" vAlign="top" width="508" height="1">
      <table border="0" cellpadding="0" cellspacing="0" width="505">
        <tr>
          <td width="13"></td>
          <td width="469">
            <p align="center"><font face="Arial Black" size="3">infobakke</font>
            </p>
          </td>
          <td width="14"></td>
        </tr>
      </table>
      <table border="0" cellpadding="0" cellspacing="0" width="505">
        <tr>
          <td width="23">
            <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
          </td>
          <td width="65">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Status</font></b></td>
          <td width="130">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Modtager</font></b></p>
          </td>
          <td width="113">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Emne</font></b></p>
          </td>
          <td width="86">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Dato</font></b></p>
          </td>
          <td width="12">
            <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
          </td>
          <td width="32">
            <p style="margin-top: 0; margin-bottom: 2"><b><font face="Verdana" size="1">Slet</font></b></td>
          <td width="25">
            <p style="margin-top: 0; margin-bottom: 2">
           

          <input type="Checkbox" name="all" onclick="checkAll(this)" value="OK">
          Alle
           
         
          </td>
        </tr>
<%

colortable = "#F5F4E9,#F5f4e9"
arrColors = split(colortable,",")
rowidx = 0

do while not rs.eof
  colIdx = rowIdx mod 2
%>         
<tr>
  <td width="23" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
  </td>
  <td width="65" bgcolor="<%=arrColors(colIdx)%>">
<b><font face="Verdana" size="1" color="#CC6699">
<p style="margin-top: 4; margin-bottom: 0">
...

</font></b>

  </td>
  <td width="130" bgcolor="<%=arrColors(colIdx)%>">
<b><font face="Verdana" size="1" color="#CC6699">
<p style="margin-top: 0; margin-bottom: 2">
...
</font></b>
  </td>
  <td width="113" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 3; margin-bottom: 0">
   
...
    </td>
  <td width="86" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 3; margin-bottom: 0">

...   
    </td>
  <td width="12" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 0; margin-bottom: 2">&nbsp;</p>
  </td>
  <td width="32" bgcolor="<%=arrColors(colIdx)%>"><p style="margin-top: 3; margin-bottom: 0">
...
  </td>
  <td width="25" bgcolor="<%=arrColors(colIdx)%>">
    <p style="margin-top: 0; margin-bottom: 2"> <input type="checkbox" name="C1" value="ON"> </td>
</tr>
<%
  rowidx = rowidx + 1
  rs.movenext
  counter = counter + 1
loop
%>

</form>
Avatar billede obhat Nybegynder
14. marts 2006 - 17:39 #9
Lige præcis :-) har du nogen ide om hvordan jeg for disse værdier med over i mit ASP script, hvor posterne skal slettes?
Avatar billede fennec Nybegynder
15. marts 2006 - 09:01 #10
Det smider du på valuen i checkBoxen:

<input type="checkbox" name="C1" value="<%= rs("id") %>">

Når formen så bliver sendt, samler den automatisk alle de valgte checkboxes værdier til en kommasepereret liste. Du kan så bruge databasens IN() metode eller gennemløbe værdierne:

if request.form("C1") <> "" then
  conn.execute("delete from dinTabel where ID IN("& request.form("C1") &")"
end if

for each item in request.form("C1")
  conn.execute("delete from dinTabel where ID="& item)
next
Avatar billede obhat Nybegynder
15. marts 2006 - 17:37 #11
Hm,,- lyder ikke nemt, men jeg prøver..
Avatar billede obhat Nybegynder
20. marts 2006 - 01:08 #12
Har ikke glemt spg. arbejder stadig på det :-)
Avatar billede obhat Nybegynder
27. marts 2006 - 14:29 #13
Okay, så virker det næsten, lige på nær at jeg får en fejl i linien:

conn.execute("delete from dinTabel where ID IN("& request.form("C1") &")"

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Avatar billede fennec Nybegynder
27. marts 2006 - 16:25 #14
Prøv at udskrive sql'en til skærmen så vi kan se den i samlet tilstand:

response.write ("delete from dinTabel where ID IN("& request.form("C1") &")"
Avatar billede obhat Nybegynder
27. marts 2006 - 17:02 #15
Sql'en ser således ud:

SELECT * FROM data WHERE id IN ('')
Avatar billede obhat Nybegynder
27. marts 2006 - 17:21 #16
Ser ud til min request.form C1 er tom
Avatar billede obhat Nybegynder
27. marts 2006 - 18:07 #17
Naturligvis, jeg sender jo heller ikke nogen formalur, men linker over til slet.asp
Hvordan får jeg så data med over?
Avatar billede softspot Forsker
27. marts 2006 - 18:21 #18
du kan vel bare smide den på dit slet-link som en parameter og så hente den ud af request.querystring i stedet...
Avatar billede obhat Nybegynder
27. marts 2006 - 18:47 #19
Måske jeg prøver...
Avatar billede obhat Nybegynder
27. marts 2006 - 19:07 #20
Det kan man ikke, da der jo ingenværdi er i formularfeltet når siden loades.
Avatar billede obhat Nybegynder
27. marts 2006 - 20:01 #21
Kan man lave noget der hedder onclick link send formular?
Avatar billede fennec Nybegynder
27. marts 2006 - 20:08 #22
Du skulle gerne have en hel masse (ifølge min post 15/03-2006 09:01:22):
<input type="checkbox" name="C1" value="1">
<input type="checkbox" name="C1" value="3">
<input type="checkbox" name="C1" value="8">

Det er disse checkbokse, der afgøre hvilke ID'er, der skal slettes. Hele formen skal altså sendes...
Avatar billede obhat Nybegynder
27. marts 2006 - 20:53 #23
Kan man så sende formen med java-script?
Avatar billede obhat Nybegynder
27. marts 2006 - 21:26 #24
Der skal nok lige siges at der er en fejl, hvis der er mindre end 3 poster virker tjek all ikke
Avatar billede obhat Nybegynder
28. marts 2006 - 10:55 #25
Okay, jeg fik form.submit() til at virke, men hvis der er mindre en 2 afkrydsningsfelter virker marker "all" ikke :(
Avatar billede obhat Nybegynder
11. april 2006 - 20:36 #26
svar = point
Avatar billede fennec Nybegynder
18. april 2006 - 11:32 #27
Angående problemet angående kun en box, skal du bare ændre:
obj = objChk.form.C1

til:
obj = document.getElementsByName("C1")
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