Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    disabilitare check box quando casella testo ha un determinato valore

    Buona sera,
    devo disabilitare dei checkbox in un PDF quando la mia casella testo14 ha il valore di 200, ma purtroppo non ci riesco.

    // Get first field value
    var v20 = getField("Testo14").value;
    var v21 = getField("CB1").value;


    if (v20== 200 ) { v21.disabled=false;}

    pensavo potesse funzionare cosi invece non funziona per niente...

    Qualche suggerimento?

    vi ringrazio.

    Gian Luca

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,684
    Ciao, alla variabile v21 stai solo attribuendo il valore di CB1 (quindi si tratta di un valore testuale), per cui non puoi impostare (a tale variabile) la proprietà disabled; tuttalpiù tale variabile dovrebbe far riferimento all'elemento stesso (non al suo valore). Inoltre non so se la proprietà disabled sia supportata nell'ambito PDF; mi pare si debba usare readonly.

    Potrebbe essere una cosa del genere (non è testato):
    codice:
    var v20 = getField("Testo14").value;
    var v21 = getField("CB1");
    
    v21.readonly = (v20 == "200");
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie mille killer worm, le tue risposte sono sempre una manna dal cielo!!!

    c'è una maniera per togliere la spunta contestualmente se v20=200?

    Grazie

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,684
    c'è una maniera per togliere la spunta contestualmente se v20=200?
    Puoi impostare la proprietà value ad "OFF" per l'elemento checkbox, magari con una semplice condizione.
    Riepilogando il tutto, potrebbe essere una cosa del genere (non è testato):
    codice:
    var v20 = getField("Testo14").value;
    var cb1 = getField("CB1");
    
    cb1.readonly = (v20 == "200");
    if(v20 == "200") cb1.value = "Off";
    Ripeto, non l'ho provato, fai sapere se funziona.
    Buon proseguimento e buona serata.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    funziona perfettamente!!!!! grazie mille.

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,684
    ottimo
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Ciao a KillerWorm,
    vorrei fare un ulteriore upgrade alla mia scheda, e mi servirebbe una dritta...
    ho 2 check box CB13 e CB14 queste devono diventare readonly se v20 è uguale a "200"; nel caso v20 sia diverso da 200 allora perché siano selezionabili devo avere verificate le condizioni v23> 2 e almeno una delle check box tra v24,v25 e v26 sia selezionata.
    ho scritto questo codice ma non sembra funzionare

    var v20 = getField("Testo6498").value;
    var v21 = getField("CB13");
    var v22 = getField("CB14");
    var v23 = getField("RIT").value;
    var v24 = getField("Check Box83").value;
    var v25 = getField("Check Box84").value;
    var v26 = getField("Check Box85").value;


    v21.readonly = (v20=="200" || v23<=2 || v24!="Yes" || v25!="Yes" || v26 != "Yes");
    v22.readonly = (v20=="200" || v23<=2 || v24!="Yes" || v25!="Yes" || v26 != "Yes");


    if (v20=="200" || v23<=2 || v24!="Yes" || v25!="Yes" || v26 != "Yes") {(v21.value = "Off")(v22.value = "Off")};

    dove sbaglio?

    grazie in anticipo per i tuoi consigli.

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,684
    Ciao, piccola premessa:
    prima di fornirti una soluzione mi permetto di darti un consiglio spassionato; una delle buone pratiche nella programmazione (tra le varie) è quella di utilizzare dei nomi il più possibile autoesplicativi per definire le variabili, scegliendoli secondo il loro contesto di utilizzo. Questo serve a rendere il codice più chiaro e comprensibile, sia allo sviluppatore stesso (soprattutto in previsione di rimetterci mano a distanza di tempo) sia a chiunque altro voglia/possa manutenerlo.

    Personalmente faccio fatica a mettere assieme le cose con tutti quei v1, v20, v123

    dove sbaglio?
    Nell'impostazione logica di quella condizione. Per gli ultimi tre valori c'è bisogno di utilizzare && (AND logico) anziché || (OR logico). Può essere utile anche usare delle parentesi per raggruppare le varie parti dell'espressione, in modo che sia umanamente più comprensibile (benché in questo caso possa funzionare anche senza).

    Sarebbe meglio ridefinire anche le specifiche che hai indicato così da avere le idee più chiare su cosa vuoi ottenere ed evitare possibili equivoci. Siccome, per la prima parte della condizione, hai indicato di rendere readonly, mentre nella seconda hai indicato di rendere selezionabili (che tecnicamente è il contrario di readonly), questo può generare confusione per la corretta elaborazione di tale espressione. Io direi di parlare solo di rendere readonly, quindi "disattivare".

    A tal proposito possiamo riformulare le specifiche in questo modo:

    CB13 e CB14 devono essere disattivati quando?

    se v20==200
    oppure (cioè se v20!=200) se NON si presenta la seguente condizione
    v23>2 e uno tra v24, v25, v26 sia selezionato


    Se tali specifiche sono corrette allora possiamo scrivere l'espressione in questo modo:
    codice:
    v20==200 || !(v23>2 && (v24=="Yes" || v25=="Yes" || v26=="Yes"))
    Se vuoi scomporre il gruppo NOT (quello tra parentesi) dovrai usare, per ciascun operatore, il proprio duale, e per ciascun valore, il proprio valore negato... sono ignorante in teoria ma dovrebbe riferirsi al principio di dualità dell'algebra booleana.

    Perciò possiamo ottenere questa espressione che produce lo stesso risultato di quella precedente:
    codice:
    v20==200 || v23<=2 || (v24!="Yes" && v25!="Yes" && v26!="Yes")
    Funziona ugualmente anche senza parentesi (che qui su ho specificato per comprendere meglio le parti in gioco, come ho indicato sopra):
    codice:
    v20==200 || v23<=2 || v24!="Yes" && v25!="Yes" && v26!="Yes"
    Quest'ultima forma è simile a quanto stavi cercando di impostare tu ma (come detto, per il principio di dualità) era necessario utilizzare l'operatore && per quel gruppo di valori.

    Tra parentesi, quella condizione potrebbe essere definita una sola volta, magari in una variabile, così da evitare codice ridondante nonché facilitare la manutenzione, ecc. ecc.

    Il tuo script può essere impostato in questo modo:
    codice:
    var disabilitaCB = v20==200 || v23<=2 || v24!="Yes" && v25!="Yes" && v26!="Yes";
    v21.readonly = disabilitaCB;
    v22.readonly = disabilitaCB;
    if (disabilitaCB) {
    	v21.value = "Off";
    	v22.value = "Off";
    }
    .
    Volendo essere più sintetici:
    codice:
    var disabilitaCB = v20==200 || v23<=2 || v24!="Yes" && v25!="Yes" && v26!="Yes";
    v21.readonly = v22.readonly = disabilitaCB;
    if (disabilitaCB) v21.value = v22.value = "Off";
    .
    Volendo essere maggiormente stringati:
    codice:
    if (v21.readonly = v22.readonly = v20==200 || v23<=2 || v24!="Yes" && v25!="Yes" && v26!="Yes") v21.value = v22.value = "Off";
    Prova e fai sapere

    grazie in anticipo per i tuoi consigli.
    Prego, buon proseguimento
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    sei sempre il TOP!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.