Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    Mostra / Nascondi righe tabella: migliorie

    Ciao a Tutti,

    riprendo un topic che gia' avevo postato tempo fa, per vedere se riusciamo ad ottenere un miglioramento ...

    <head><script type="text/javascript">

    var i = 1;
    function add_row(v) {
    if ((v=='i') && (i<8)) { i++; document.getElementById('itv_d'+i).style.display=' '; }
    }
    function del_row(v) {
    if ((v=='i') && (i>1)) { document.getElementById('itv_d'+i).style.display=' none'; i--; }
    }
    //
    function show_des() {
    for (var x=2; x<9; x++) {
    if (document.FrontPage_Form8.elements['itv_des'+x].value.length != 0) {
    document.getElementById('itv_d'+x).style.display=' '; }
    else { document.getElementById('itv_d'+x).style.display=' none'; }
    }
    }

    </script></head>

    <body onload="show_des()">
    <form method="POST" name="FrontPage_Form8">
    <table id="table2">
    <tr>
    <td><button onClick="add_row('i')">+</button></td>
    <td><button onClick="del_row('i')">-</button></td>
    </tr>
    <tr id='itv_d2'><td><input type="text" name="itv_des2" id="itv_des2" value="<%=objRS("ITV_des2")%>"></td></tr>
    ....
    <tr id='itv_d8'><td><input type="text" name="itv_des8" id="itv_des8" value="<%=objRS("ITV_des8")%>"></td></tr>

    </table>
    ....
    </form></body>

    Questo codice mi funziona bene e dice che:

    all' apertura della pagina ho 8 campi che, qualora contenessero qualche carattere,
    li vedrei a video in 8 righe distinte, tramite la funzione show_des().

    Se, faccio un esempio, avessi i primi 3 campi con qualche carattere,
    DEVO schiacciare 3 volte il pulsante "+" per vedere comparire a video il primo campo vuoto in cui poterci scrivere
    questo succede perche' la variabile var i e' impostata sempre a 1.

    Nel caso sfortunato in cui ho i primi 7 campi itv_des tutti popolati, devo schiacciare 8 volte il pulsante "+" per posizionarmi sull' ultima riga che in questo caso e' libera.

    Domanda:

    c' e' un modo per posizionarsi sull' "ultimo dei campi itv_des compilati (puo' essere il 3, il 5, ecc..), in modo che quando schiaccio il pulsante "+" venga riconosciuta automaticamente la posizione corretta e quindi per vedere il primo campo vuoto (se libero c' e') lo schiaccio una sola volta ???

    Grazie mille in anticipo !!!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma se lo fai lato server in asp tipo:
    codice:
    <tr id='itv_d2'><td><input type="text" <%if objRS("ITV_des2") <> "" Then Response.Write "style=""dislay:block"""%> name="itv_des2" id="itv_des2" value="<%=objRS("ITV_des2")%>">
    il primo record vuoto visualizzi l'imput, sempre che abbia capito

    In futuro non aprire nuove discussione se le hai postate, ma recuperale (il cross-post è vietato) con la ricerca
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ciao Andrea,

    Grazie x la risposta e il suggerimento,

    ho provato ma il problema per me non e' quello di far apparire piena / vuota una riga con / senza carattere

    mi interesserebbe settare la variabile "i" non a 1 ma come conteggio di quei campi che contengono caratteri.

    Ho provato a fare un ciclo for per vedere quanti campi pieni ho e definire una variabile globale da far leggere alla funzione add_row
    purtroppo non ci riesco ...
    alert(i) mi da' 1 mentre nel db ho 2 campi pieni, quindi mi aspettavo 2 ...

    <head><script>
    var i = 1;
    for (var y=2; y<9; y++) {
    if (document.FrontPage_Form8.elements['itv_des'+y+'_db'].value.length != 0) { i = i + 1; }
    //return i;
    }
    function add_row(v) {
    alert(i);
    if ((v=='i') && (i<8)) { i++; document.getElementById('itv_d'+i).style.display=' '; }
    }
    function del_row(v) {
    if ((v=='i') && (i>1)) { document.getElementById('itv_d'+i).style.display=' none'; i--; }
    }
    </script></head>

    <body>
    <form method="POST" name="FrontPage_Form8">
    <input type="hidden" name="itv_des2_db" id="itv_des2_db" value="<%=objRS("ITV_des2")%>">
    <input type="hidden" name="itv_des3_db" id="itv_des3_db" value="<%=objRS("ITV_des3")%>">
    <input type="hidden" name="itv_des4_db" id="itv_des4_db" value="<%=objRS("ITV_des4")%>">
    <input type="hidden" name="itv_des5_db" id="itv_des5_db" value="<%=objRS("ITV_des5")%>">
    <input type="hidden" name="itv_des6_db" id="itv_des6_db" value="<%=objRS("ITV_des6")%>">
    <input type="hidden" name="itv_des7_db" id="itv_des7_db" value="<%=objRS("ITV_des7")%>">
    <input type="hidden" name="itv_des8_db" id="itv_des8_db" value="<%=objRS("ITV_des8")%>">

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma imposti la variabile i a 1 ma sei sicuro che almeno un capo sia pieno?
    Comunque prova cosi.
    onload=function(){
    var elem = document.getElementsByTagName("input")
    for (var y=0; y<9; y++) {
    if (elem[y].value != 0) { i=y; }
    }
    }
    anche su questo controllo (v=='i') ho dei dubbi se i e la variabile globale non va tra gli apici
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Andrea, Grazie,

    con la tua dritta di creare un' altra funzione ho risolto il problema

    <head><script type="text/javascript">
    //
    var i = 1;
    function conta_des() {
    for (var y=2; y<9; y++) {
    if (document.FrontPage_Form8.elements['itv_des'+y+'_db'].value.length != 0) { i = i + 1; }
    }
    }

    function add_row(v) {
    if ((v=='i') && (i<8)) { i++; document.getElementById('itv_d'+i).style.display=' '; }
    }
    function del_row(v) {
    if ((v=='i') && (i>1) && (document.getElementById('itv_des'+i).value.length == 0)) {
    document.getElementById('itv_d'+i).style.display=' none'; i--; }
    }
    //
    function show_des() {
    for (var x=2; x<9; x++) {
    if (document.FrontPage_Form8.elements['itv_des'+x].value.length != 0) {
    document.getElementById('itv_d'+x).style.display=' '; }
    else { document.getElementById('itv_d'+x).style.display=' none'; }
    }
    }
    //
    </script>
    </head>

    <body onload="conta_des();show_des()">
    <form method="POST" name="FrontPage_Form8">
    <input type="hidden" name="itv_des2_db" id="itv_des2_db" value="<%=objRS("ITV_des2")%>">
    <input type="hidden" name="itv_des3_db" id="itv_des3_db" value="<%=objRS("ITV_des3")%>">
    <input type="hidden" name="itv_des4_db" id="itv_des4_db" value="<%=objRS("ITV_des4")%>">
    <input type="hidden" name="itv_des5_db" id="itv_des5_db" value="<%=objRS("ITV_des5")%>">
    <input type="hidden" name="itv_des6_db" id="itv_des6_db" value="<%=objRS("ITV_des6")%>">
    <input type="hidden" name="itv_des7_db" id="itv_des7_db" value="<%=objRS("ITV_des7")%>">
    <input type="hidden" name="itv_des8_db" id="itv_des8_db" value="<%=objRS("ITV_des8")%>">
    <form method="POST" name="FrontPage_Form8">
    <table id="table2">
    <tr>
    <td><button onClick="add_row('i')">+</button></td>
    <td><button onClick="del_row('i')">-</button></td>
    </tr>
    .........
    .........


    In questo modo la funzione conta_des() mi conta al caricamento della pagina quanti sono i campi itv_des NON vuoti.
    Se per caso ce ne sono 2, e uno schiaccia il pulsante "+" per aggiungere una riga, la riga si aggiunge partendo dalla posizione 2 e quindi una riga nuova vuota si crea subito, con un solo click !!!

    Poi la funzione del_row mi consente di cancellare a ritroso le righe vuote che creo, pero' si ferma sempre in corrispondenza della prima riga in cui il campo itv_des e' pieno, come e' giusto che sia. Se cancello i caratteri contenuti in esso cosi' che il campo diventa libero, schiacciando il pulsante "-" sono in grado di cancellare anche quella riga.

    Obiettivo raggiunto, problema risolto !!! Grazie ancora !!!!

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.