Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    209

    Controllo sui campi di un form

    salve a tutti

    ho un problema di questo tipo:

    in fase di modifica di un form, quindi con i campi valorizzati, ho due campi select che posso modificare alternativamente spuntando una checkbox che li abilita/disabilita.

    Il form si presenta con una select che mostra il valore e l'altra con l'indicazione "scegli".

    Ora nella funzione di controllo javascript ho scritto...

    if ((document.getElementById('prodfin').value == "") && (document.getElementById('semilavorato') == ""))
    {
    alert('Selezionare il prodotto finito o il semilavorato');
    Errore = 1;
    }

    Ora se non modifico i campi select la funzione di controllo, secondo me non dovrebbe darmi errore perché uno dei due campi è valorizzato.
    Invece facendo una alert ho visto che entrambi risultano vuoti.

    Non capisco perch.

    Potete aiutarmi ?

  2. #2
    Se in entrambe le select il primo valore è quello 'scegli', il controllo lo farei:
    codice:
    if ((document.getElementById('prodfin').selectedIndex == 0) && (document.getElementById('semilavorato').selectedIndex == 0)) {
        alert('Selezionare il prodotto finito o il semilavorato');
        Errore = 1;
    }
    Chiaro che, quando costruisci la select, non ti devi dimenticare di mettere
    selected="selected" nella option appropriata, cioè sia in quella che
    mostra il valore che in quella che mostra 'scegli'

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    209
    No solo una lista, quella disabilitata, ha come primo valore scegli; la seconda ha il valore estratto dal db.
    A questo punto se spunto il check si disabilita quella prima valorizzata e posso scegliere un valore da quella prima disabilitata.
    Però se l'utente non cambia valori mi segnala l'errore di form, e questo non va bene.

    p.s.

    ho provato il tuo suggerimento ma non va lo stesso

  4. #4
    A questo punto non resta che vedere un po' di codice, o un link!
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    209
    Questa è la funzione javascript


    <script type="text/javascript">

    function Cliccato()
    {
    if(document.getElementById('Check').checked){
    if(document.getElementById('prodfin').disabled=tru e)
    {
    document.getElementById('prodfin').disabled=false;
    document.getElementById('semilavorato').disabled=t rue;
    }
    else
    {
    document.getElementById('prodfin').disabled=true;
    document.getElementById('semilavorato').disabled=f alse;
    }
    }
    else
    {
    if(document.getElementById('semilavorato').disable d=true)
    {
    document.getElementById('prodfin').disabled=true;
    document.getElementById('semilavorato').disabled=f alse;
    }
    else
    {
    document.getElementById('prodfin').disabled=false;
    document.getElementById('semilavorato').disabled=t rue;
    }
    }
    }
    </script>



    a seguire i campi del form che ci interessano


    ...
    <%
    dim RSProdsem, RSProdfin
    idtipo=rs(20)
    Set cn = Server.CreateObject("ADODB.Connection")
    Set rst = Server.CreateObject("ADODB.Recordset")
    cn.Open Objconn
    strsql = "SELECT semilavorato, codice FROM T_TipologiaProdotti where id=" & idtipo
    rst.open strsql, cn, 3, 3
    tipo=rst(0)
    codice=rst(1)
    rst.close
    cn.Close
    Set cn = Nothing
    Set rst = Nothing

    if tipo = 0 then

    %>
    Prodotto Finito:
    <select size=1 style="font-family:tahoma; font-size:11px; margin-right:3px" name="prodfin">
    <%
    set RSProdfin = Server.CreateObject("ADODB.RECORDSET")
    RSProdfin.ActiveConnection=Objconn
    RSProdfin.Open("Select * from T_TipologiaProdotti where semilavorato=0")
    Response.Write("<option selected>" & Codice & "</option>")
    while not RSProdfin.EOF
    if Codice <> (RSProdfin(2)) then
    Response.Write "<option value=" & trim(RSProdfin(0)) & ">" & RSProdfin(2) & "</option>" & vbcrlf
    end if
    RSProdfin.movenext
    wend
    RSProdfin.close
    set RSProdfin=nothing
    %>
    </select>
    Scegli<INPUT type="checkbox" ID="Check" onclick="javascript:Cliccato();" >
    Semilavorato:
    <select disabled="disabled" size=1 style="font-family:tahoma; font-size:11px; margin-right:3px" name="semilavorato">
    <%
    set RSProdsem = Server.CreateObject("ADODB.RECORDSET")
    RSProdsem.ActiveConnection=Objconn
    RSProdsem.Open("Select * from T_TipologiaProdotti where semilavorato=1")
    Response.Write("<option selected>Scegli</option>")
    while not RSProdsem.EOF
    Response.Write "<option value=" & trim(RSProdsem(0)) & ">" & RSProdsem(2) & "</option>" & vbcrlf
    RSProdsem.movenext
    wend
    RSProdsem.close
    set RSProdsem=nothing
    %>
    </select>
    <%
    else
    %>
    Prodotto Finito:
    <select disabled="disabled" size=1 style="font-family:tahoma; font-size:11px; margin-right:3px" name="prodfin">
    <%
    set RSProdfin = Server.CreateObject("ADODB.RECORDSET")
    RSProdfin.ActiveConnection=Objconn
    RSProdfin.Open("Select * from T_TipologiaProdotti where semilavorato=0")
    Response.Write("<option selected>Scegli</option>")
    while not RSProdfin.EOF
    Response.Write "<option value=" & trim(RSProdfin(0)) & ">" & RSProdfin(2) & "</option>" & vbcrlf
    RSProdfin.movenext
    wend
    RSProdfin.close
    set RSProdfin=nothing
    %>
    </select>
    Scegli<INPUT type="checkbox" ID="Check" onclick="javascript:Cliccato();" >
    Semilavorato:
    <select size=1 style="font-family:tahoma; font-size:11px; margin-right:3px" name="semilavorato">
    <%
    set RSProdsem = Server.CreateObject("ADODB.RECORDSET")
    RSProdsem.ActiveConnection=Objconn
    RSProdsem.Open("Select * from T_TipologiaProdotti where semilavorato=1")
    Response.Write("<option selected>" & Codice & "</option>")
    while not RSProdsem.EOF
    if Codice <> (RSProdsem(2)) then
    Response.Write "<option value=" & trim(RSProdsem(0)) & ">" & RSProdsem(2) & "</option>" & vbcrlf
    end if
    RSProdsem.movenext
    wend
    RSProdsem.close
    set RSProdsem=nothing
    %>
    </select>
    <%
    end if
    %>

    ...

  6. #6
    Ok, visto!
    Crei male le select!
    Ora ti scrivo il pezzo relativo a Prodotto Finito, le altre a te!
    codice:
     Prodotto Finito:
    <select id="prodfin" size=1 style="font-family:tahoma; font-size:11px; margin-right:3px" name="prodfin">
    <%
    set RSProdfin = Server.CreateObject("ADODB.RECORDSET")
    RSProdfin.ActiveConnection=Objconn
    RSProdfin.Open("Select * from T_TipologiaProdotti where semilavorato=0")
    Response.Write("<option selected=""selected"" value=""" & Codice & """>" & Codice & "</option>")
    while not RSProdfin.EOF
    if Codice <> (RSProdfin(2)) then
    Response.Write "<option value=""" & trim(RSProdfin(0)) & """>" & RSProdfin(2) & "</option>" & vbcrlf
    end if
    RSProdfin.movenext
    wend
    RSProdfin.close
    set RSProdfin=nothing
    %>
    </select>
    Ricapitolando:
    per selezionare una option occorre mettere l'attributo selected="selected"
    gli attributi vanno sempre fra virgolette
    se fai una getElementById &egrave; meglio (!) che l'elemento che cerchi abbia un id !!

    HTH
    Zappa
    P.S: aspetta un attimo, che credo ci sia ancora qualche errore di fondo ...
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  7. #7
    Gi&agrave;
    vedi qua:
    codice:
     Prodotto Finito:
    <select id="prodfin" size="1" style="font-family:tahoma; font-size:11px; margin-right:3px" name="prodfin">
    <%
    set RSProdfin = Server.CreateObject("ADODB.RECORDSET")
    RSProdfin.ActiveConnection=Objconn
    RSProdfin.Open("Select * from T_TipologiaProdotti where semilavorato=0")
    while not RSProdfin.EOF
        Response.Write "<option value=""" & trim(RSProdfin(0)) & """"
        if (Codice = RSProdfin(2)) then
            Response.Write " selected=""selected"""
        end if
        Response.Write ">" & RSProdfin(2) & "</option>" & vbcrlf
        RSProdfin.movenext
    wend
    RSProdfin.close
    set RSProdfin=nothing
    %>
    </select>
    Il problema &egrave; che tu hai 'in mano' la variabile 'Codice', il cui contenuto &egrave; uno dei valori di RSProdfin(2), ma per scrivvere una option completa ti serve anche l'RSProdfin(0) relativo.
    Con il codice di cui sopra la select viene riempita e, quando il while incontra RSProdfin(2) uguale a Codice, ci mette un bel selected="selected"

    Dovrebbe andare.
    P.S: il javascript, poverino, non c'entra, stavolta c'entra l'asp!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    209
    grazie mille, e chiedo umilmente perdono a javascript

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    209
    ops

    mi da ancora un problema; se è selezionata la select "prodfin" spuntando il check inverte la selezione, ma se è selezionata la select "semilavorato" inverte la selezione solo dopo aver spuntato la check due volte (quindi check senza spunta).
    Io le modifiche che tu mi hai segnalato le ho riportate solo nelle while dove uso il campo codice.

    Ho sbagliato?

  10. #10
    &Egrave; sbagliata la funzione javascript:
    codice:
    function Cliccato()
    {
        if(document.getElementById('Check').checked){
            if(document.getElementById('prodfin').disabled==true)
            {
                document.getElementById('prodfin').disabled=false;
                document.getElementById('semilavorato').disabled=true;
            }
            else
            {
                document.getElementById('prodfin').disabled=true;
                document.getElementById('semilavorato').disabled=false;
            }
        }
        else
        {
            if(document.getElementById('semilavorato').disabled==true)
            {
                document.getElementById('prodfin').disabled=true;
                document.getElementById('semilavorato').disabled=false;
            }
            else
            {
                document.getElementById('prodfin').disabled=false;
                document.getElementById('semilavorato').disabled=true;
            }
        }
    }
    attento, non siamo in asp! il test sull'uguaglianza, in javascript, si scrive uguale uguale e non uguale!
    (miii che gioco di parole!)

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.