Avatar billede stkol Nybegynder
07. juni 2003 - 18:19 Der er 11 kommentarer og
1 løsning

Begrænset antal checked RADIO buttons

Hejsa

Jeg har en løkke med noget data omkring nogle dokumenter der ligger i DB, her har jeg også nogle radio buttons som indikere om dukumentet er aktiv som nyhed eller ikke, i denne forbindelse vil jeg gerne have lavet det sådan at der minimum er en nyhed valgt og maximum kan være 3 nyheder valgt! Hvordan gør jeg det??

Jeg har følgende kode :

<%
    Dim dbnewsConn
    Dim connection
    Dim rs

    '####### News Admin ############
    '## Create db objects and SQL   
    set dbnewsConn = Server.CreateObject("ADODB.Connection")
    dbnewsConn.Open Application("ConnectString")
    Set rs = Server.CreateObject("ADODB.Recordset")
   
    sql = "SELECT recordid, sublinkname, kategori, dato, newsactive FROM documents WHERE (news = 'news') AND (hidden = 'yes') ORDER BY dato, kategori, headline"

    Set rs = dbnewsConn.Execute(sql)
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<html>
<head>
    <title></title>
   
<link rel="STYLESHEET" type="text/css" href="../frame/laoscss.css">

</head>

<body>

<table width="280" cellspacing="2" cellpadding="2" border="0">
<tr>
    <td bgcolor="#CC0033"><font size="1" color="#FFFFFF"><b>Dato</b></font></td>
    <td bgcolor="#CC0033"><font size="1" color="#FFFFFF"><b>Dokument</b></font></td>
    <td bgcolor="#CC0033" align="center"><font size="1" color="#FFFFFF"><b>On</b></font></td>
    <td bgcolor="#CC0033" align="center"><font size="1" color="#FFFFFF"><b>Off</b></font></td>
</tr>
<%
    While (not rs.EOF)
%>   
<tr>
    <td nowrap><font size="1"><%= left(rs("dato"),8)%></font></td>
    <td nowrap><font size="1"><b><%= rs("kategori")%></b> - <%= rs("sublinkname")%></font></td>
    <td nowrap align="center"><input type="radio" name="newsactive" id="newsactive<%=trim(rs("recordid"))%>" value="active" <% if trim(rs("newsactive")) = "active" then
                                                                                                        response.write "checked"
                                                                                                      else
                                                                                                          response.write ""
                                                                                                      end if
                                                                                                    %>></td>
    <td nowrap align="center"><input type="radio" name="newsactive<%=trim(rs("recordid"))%>" id="newsactive" value="offline" <% if trim(rs("newsactive")) = "offline" then
                                                                                                        response.write "checked"
                                                                                                      else
                                                                                                          response.write ""
                                                                                                      end if
                                                                                                    %>></td>
</tr>
<%
    rs.movenext
    wend
%>
<tr>
    <td colspan="4" valign="top"><hr width="100%" color="CC0033"></hr></td>
</tr>
</table>

</body>
</html>

Håber i kan hjælpe! *S

/Stig :-)
Avatar billede tpd Nybegynder
07. juni 2003 - 18:24 #1
Hej hvis det er noget med asp kan du evt spørge inde på www.asp.dk
Avatar billede stkol Nybegynder
07. juni 2003 - 18:55 #2
TPD : Ja men nu har jeg jo oprettet spørgsmålet her !!!!
Avatar billede karsten_larsen Praktikant
07. juni 2003 - 21:34 #3
Der findes en måde som du kan hente fra et paging script, som du finder her.

http://activedeveloper.dk/aspdigital/kapitel2/paging.asp

:-) k_l
Avatar billede eagleeye Praktikant
08. juni 2003 - 16:13 #4
Du skal havde gang i noget Javascript. Jeg har prøvet at lave det i koden.
Frøst skulle On / Off for hver post havde samme navn så en ON hørte til en Off.

Så lave et javascritp som tæller de radio knapper som er On og kun tillade submit hvis 1-3 er valgt. Jeg har også tilføjet <Form> og submit knappen til din kode.:

Man kan så også tilføje et onClick på On radion knappen og tjekke på antallet og vise popup hvis der er valgt for mange. Sig lige til for eks på det også.



<%
    Dim dbnewsConn
    Dim connection
    Dim rs

    '####### News Admin ############
    '## Create db objects and SQL   
    set dbnewsConn = Server.CreateObject("ADODB.Connection")

    dbnewsConn.Open Application("ConnectString")

    Set rs = Server.CreateObject("ADODB.Recordset")
   
    sql = "SELECT recordid, sublinkname, kategori, dato, newsactive FROM documents WHERE (news = 'news') AND (hidden = 'yes') ORDER BY dato, kategori, headline"

    Set rs = dbnewsConn.Execute(sql)
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<html>
<head>
    <title></title>
   
<link rel="STYLESHEET" type="text/css" href="../frame/laoscss.css">

<script LANGUAGE="JavaScript">

function countRadioOn(theform) {
var antalOn = 0;
if (document.all || document.getElementById) {
  for (i = 0; i < theform.length; i++) {
    var tempobj = theform.elements[i];
    if (tempobj.type.toLowerCase() == "radio" && tempobj.value.toLowerCase() == "active" && tempobj.checked == true)
      antalOn = antalOn + 1;
  }
}

return antalOn;
}

function tjekSubmit(theform) {
var antal;
antal = countRadioOn(theform);
if ((antal<=3) && (antal>0)) {
  return true;
} else {
  alert ("Minimum 1 og maximalt 3 skal vælges.");
  return false;
}
}

</script>


</head>

<body>

<form action="" method="POST" onsubmit="return tjekSubmit(this);">
<table width="280" cellspacing="2" cellpadding="2" border="0">
<tr>
    <td bgcolor="#CC0033"><font size="1" color="#FFFFFF"><b>Dato</b></font></td>
    <td bgcolor="#CC0033"><font size="1" color="#FFFFFF"><b>Dokument</b></font></td>
    <td bgcolor="#CC0033" align="center"><font size="1" color="#FFFFFF"><b>On</b></font></td>
    <td bgcolor="#CC0033" align="center"><font size="1" color="#FFFFFF"><b>Off</b></font></td>
</tr>
<%
    While (not rs.EOF)
%>   
<tr>
    <td nowrap><font size="1"><%= left(rs("dato"),8)%></font></td>
    <td nowrap><font size="1"><b><%= rs("kategori")%></b> - <%= rs("sublinkname")%></font></td>
    <td nowrap align="center"><input type="radio" name="newsactive<%=trim(rs("recordid"))%>" id="newsactive<%=trim(rs("recordid"))%>" value="active" <% if trim(rs("newsactive")) = "active" then
                                                                                                        response.write " checked "
                                                                                                      else
                                                                                                          response.write ""
                                                                                                      end if
                                                                                                    %>></td>
    <td nowrap align="center"><input type="radio" name="newsactive<%=trim(rs("recordid"))%>" id="newsactive" value="offline" <% if trim(rs("newsactive")) = "offline" then
                                                                                                        response.write " checked "
                                                                                                      else
                                                                                                          response.write ""
                                                                                                      end if
                                                                                                    %>></td>
</tr>
<%
    rs.movenext
    wend
%>
<tr>
    <td colspan="4" valign="top"><hr width="100%" color="CC0033"></hr></td>
</tr>
</table>
<input type="submit" name="send" value="send">
</form>

</body>
</html>
Avatar billede jtc Nybegynder
08. juni 2003 - 16:31 #5
Eagleeye Kan du ikke lige hjælpe mig med et andet spørgsmål
Avatar billede jtc Nybegynder
08. juni 2003 - 16:35 #6
Spørgsmålet ligger her
http://www.eksperten.dk/spm/362094
Avatar billede stkol Nybegynder
08. juni 2003 - 22:17 #7
Hejsa EagleEye : Det virker kanont, men jeg vil egentligt også gerne se eksemplet på det med onclick!! *S Jeg vil nemlig også gerne have det sådan at den submitter formen når man har skiftet value i en af radio buttons, så man ikke behøver klikke på en submit knappe :-)
Avatar billede eagleeye Praktikant
08. juni 2003 - 22:27 #8
Skal den submitte hver gang man tryker på en radio knap?
Avatar billede stkol Nybegynder
08. juni 2003 - 22:30 #9
Ja helst, da det nok mest bliver en af dokumenterne man skifter value på af gangen !! :-)
Avatar billede eagleeye Praktikant
08. juni 2003 - 22:52 #10
Ok, her er med onClick tilføjet til active radio knappen, man kan stadig max vælge 3. Hvis man vælger en til active og der ikke er valgt 3 endnu så submitter den formen.


<%
    Dim dbnewsConn
    Dim connection
    Dim rs

    '####### News Admin ############
    '## Create db objects and SQL   
    set dbnewsConn = Server.CreateObject("ADODB.Connection")

    'dbnewsConn.Open Application("ConnectString")


    dbnewsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db101.mdb")
   
    Set rs = Server.CreateObject("ADODB.Recordset")
   
    sql = "SELECT recordid, sublinkname, kategori, dato, newsactive FROM documents WHERE (news = 'news') AND (hidden = 'yes') ORDER BY dato, kategori, headline"

    Set rs = dbnewsConn.Execute(sql)
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<html>
<head>
    <title></title>
   
<link rel="STYLESHEET" type="text/css" href="../frame/laoscss.css">

<script LANGUAGE="JavaScript">

function countRadioOn(theform) {
var antalOn = 0;
if (document.all || document.getElementById) {
  for (i = 0; i < theform.length; i++) {
    var tempobj = theform.elements[i];
    if (tempobj.type.toLowerCase() == "radio" && tempobj.value.toLowerCase() == "active" && tempobj.checked == true)
      antalOn = antalOn + 1;
  }
}

return antalOn;
}

function tjekSubmit(theform) {
var antal;
antal = countRadioOn(theform);
if ((antal<=3) && (antal>0)) {
  return true;
} else {
  alert ("Minimum 1 og maximalt 3 skal vælges.");
  return false;
}
}

function checkAntal(theform, lastset) {
  antal = countRadioOn(theform);
  if (antal>3) {
    for (var b = 0; b < lastset.length; b++) {
      if (lastset[b].checked) {
        lastset[b].checked = false;
      } else {
        if (lastset[b].checked==false) {
          lastset[b].checked = true;
        }
      }
    }
    alert ("Maximalt 3 skal vælges.");
   
  } else {
    theform.submit();
  }
}

</script>


</head>

<body>

<form action="" method="POST" onsubmit="return tjekSubmit(this);">
<table width="280" cellspacing="2" cellpadding="2" border="0">
<tr>
    <td bgcolor="#CC0033"><font size="1" color="#FFFFFF"><b>Dato</b></font></td>
    <td bgcolor="#CC0033"><font size="1" color="#FFFFFF"><b>Dokument</b></font></td>
    <td bgcolor="#CC0033" align="center"><font size="1" color="#FFFFFF"><b>On</b></font></td>
    <td bgcolor="#CC0033" align="center"><font size="1" color="#FFFFFF"><b>Off</b></font></td>
</tr>
<%
    While (not rs.EOF)
%>   
<tr>
    <td nowrap><font size="1"><%= left(rs("dato"),8)%></font></td>
    <td nowrap><font size="1"><b><%= rs("kategori")%></b> - <%= rs("sublinkname")%></font></td>
    <td nowrap align="center"><input type="radio" name="newsactive<%=trim(rs("recordid"))%>" id="newsactive<%=trim(rs("recordid"))%>" value="active" <% if trim(rs("newsactive")) = "active" then
                                                                                                        response.write " checked "
                                                                                                      else
                                                                                                          response.write ""
                                                                                                      end if
                                                                                                    %> onClick="checkAntal(this.form, this.form.newsactive<%=trim(rs("recordid"))%>);"></td>
    <td nowrap align="center"><input type="radio" name="newsactive<%=trim(rs("recordid"))%>" id="newsactive" value="offline" <% if trim(rs("newsactive")) = "offline" then
                                                                                                        response.write " checked "
                                                                                                      else
                                                                                                          response.write ""
                                                                                                      end if
                                                                                                    %>></td>
</tr>
<%
    rs.movenext
    wend
%>
<tr>
    <td colspan="4" valign="top"><hr width="100%" color="CC0033"></hr></td>
</tr>
</table>
<input type="submit" name="send" value="send">
</form>

</body>
</html>
Avatar billede eagleeye Praktikant
08. juni 2003 - 22:53 #11
hov du skal se bort fra den ASP som er i toppen med <html> taggen den har jeg rettet i det skal bare være din kode.
Avatar billede stkol Nybegynder
08. juni 2003 - 23:00 #12
Du er konge!! Tusind tak for det :-) Det virker kanont, lige i øjet på det jeg ville !!!!!
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
Kurser inden for grundlæggende programmering

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