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

    Disabilitare un select se da un altro select si sceglie un certo valore

    Salve, sto scrivendo un form per gestire gli orari di apertura e chiusura di un negozio, inserendo orari a intervalli di mezz'ora in un select, dopo aver prelevato da un db l'orario di apertura/chiusura corrente.

    Ovviamente se il negozio non apre, non ha un orario di chiusura, per cui sto cercando un modo per impostare il select dell'orario di chiusura su "Chiuso" e in modalità disabled quando il select dell'apertura è su "Chiuso".

    Questo script non funziona bene...
    codice:
    <script>function change(value) {
    	if (value == "-off-") {
    		document.getElementById("chiusura1").innerHTML = "<option selected disabled>Chiuso</option>";
    	} else {
    		document.getElementById("select").innerHTML = "<option selected value='<?php $chfema; ?>'><?php echo '$chfema'; ?></option><option value='10:30'>10:30</option><option value='11:00'>11:00</option><option value='11:30'>11:30</option><option value='12:00'>12:00</option><option value='12:30'>12:30</option><option value='13:00'>13:00</option><option value='13:30'>13:30</option><option value='14:00'>14:00</option>";
    	}
    }
    change("-off-");
    </script>
    
    <select name="apfema" onchange="change(this.value)"> ...
    
    <select id="chiusura1" name="chfema">
    	<option selected value="<?php $chfema; ?>"><?php echo "$chfema"; ?></option>
    	<option value="10:30">10:30</option>
    	<option value="11:00">11:00</option>
    	<option value="11:30">11:30</option>
    	<option value="12:00">12:00</option>
    	<option value="12:30">12:30</option>
    	<option value="13:00">13:00</option>
    	<option value="13:30">13:30</option>
    	<option value="14:00">14:00</option>
    </select>
    Al caricamento della pagina va bene, mette in selected gli orari caricati dal db, ed entrambi i menù sono attivi, ma se imposto Chiuso sull'orario di apertura, quello di chiusura va su Chiuso e ci resta anche se cambio l'orario di apertura.
    Vorrei inoltre non dover scrivere due volte l'elenco delle option (nella funzione e nel select): posso caricare la stringa in una variabile php?

  2. #2
    Ho corretto un errore: nel getElementById dell'else c'era un id sbagliato...
    Resta comunque mal funzionante: cambiando l'orario di apertura, quello di chiusura mostra un campo vuoto e non l'orario di chiusura corrente.

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    document.getElementById("select").innerHTML non vedo questo ID nel codice.
    Vorrei inoltre non dover scrivere due volte l'elenco delle option (nella
    funzione e nel select): posso caricare la stringa in una variabile php?
    solo usando ajax cioè inviando il dato al server
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Hai ragione, al posto di select ci va chiusura1.
    Ho aggiornato il codice come segue:
    codice:
    <script>
    	function changefema(value) {
    		if (value == "-off-") {
    			document.getElementById("chiusura1").innerHTML = "<option selected disabled>Chiuso</option>";
    		} else {
    			document.getElementById("chiusura1").innerHTML = "<option selected value='<?php $chfema; ?>'>Chiusura lun./ven. mattina:</option><option>10:30</option><option>11:00</option><option>11:30</option><option>12:00</option><option>12:30</option><option>13:00</option><option>13:30</option><option>14:00</option>";
    		}
    	}
    	change("-off-");
    </script>
    <select name="apfema" onchange="changefema(this.value)">
    	<option selected value="<?php $apfema; ?>">Apertura lun./ven. mattina:</option>
    	<option>7:30</option>
    	<option>8:00</option>
    	<option>8:30</option>
    	<option>9:00</option>
    	<option>9:30</option>
    	<option>10:00</option>
    	<option>10:30</option>
    	<option>11:00</option>
    	<option>11:30</option>
    	<option>12:00</option>
    	<option value="-off-">Chiuso</option>
    </select> - Corrente: <?php echo "$apfema"; ?>
    
    
    <select id="chiusura1" name="chfema">
    	<option selected value="<?php $chfema; ?>">Chiusura lun./ven. mattina:</option>
    	<option>10:30</option>
    	<option>11:00</option>
    	<option>11:30</option>
    	<option>12:00</option>
    	<option>12:30</option>
    	<option>13:00</option>
    	<option>13:30</option>
    	<option>14:00</option>
    </select> - Corrente: <?php echo "$chfema"; ?>
    
    
    <input type="submit" name="submit" id="submit" value="Aggiorna orari" />
    La pagina che dovrebbe gestire i valori e aggiornare il db:
    Codice PHP:
    $id=$_POST['id'];$apfema=$_POST['apfema'];$chfema=$_POST['chfema'];
    $sql "UPDATE orari SET apfema='$apfema',chfema='$chfema' WHERE id=$id";
    $result mysql_query($sql,$link);
    if (!
    $result) {    echo $sql;    die('Errore nel database: ' mysql_error());} 
    Purtroppo succede che la modifica di un orario, apertura o chiusura, cancella l'altro valore dal db, costringendo il gestore a impostare tutti gli orari, nonostante ci sia l'option selected che punta al valore corrente prelevato dalla variabile php (il form è preceduto da codice che preleva l'intera tabella e assegna ogni campo a una variabile). Infatti accanto ai menù select, il browser visualizza l'orario corrente guidando l'utente a non cambiare se va bene quell'orario visualizzato. Perché i due menù select vanno in conflitto? La funzione JS mi serve per fissare su Chiuso l'orario di chiusura se il negozio non apre (Chiuso nel select di orario di apertura).

  5. #5
    Risolto. L'errore era di ambito PHP: mancavano gli echo negli option selected per passare al server i valori correnti...

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.