Modifica campo SELECT attraverso pulsante

di il
12 risposte

Modifica campo SELECT attraverso pulsante

Spero che qualcuno mi possa aiutare e spero di aver scritto nella sezione giusta.

Ho un input text, un select ed un button come segue:

<input type="text" value="" name="dato">

<select name="selezione" value="selezione" style="width:250px;">
<option value=""></option>
<option value="sel1">Dato vero</option>
<option value="sel2">Dato falso</option>
</select>

<button type="submit" name="verifica" onclick="..???..">Verifica condizione</button>

Io vorrei che, una volta clickato il pulsante (button), accada la seguente cosa::
Se il testo inserito nell'input text è (ad esempio) 'true' allora nel SELECT deve automatciamente apparire "Dato vero", altrimenti deve apparire "Dato falso".

A prescindere dall'implementazione di questo (facilissimo) IF , io non capisco cosa devo scrivere all'nterno dell' ONCLICK del button per modificare il campo del SELECT.

Grazie in anticipo

12 Risposte

  • Re: Modifica campo SELECT attraverso pulsante

    Quello che vuoi e' semplicemente evidenziare segnalandolo come selected o che sia l'unico campo presente dentro i tag select?? perche se quello che ti interessa e' semplicemente avere una unica opzione dentro select allora puoi,
    
    // consiglierei di cambiare name con id, piu' facile per richiamare l'oggetto attraverso js
    // quindi io faro finta che i tuo name sia id
    onclick="document.getElementById('sel1').innerHTML=document.getElementById('dato').value=='true'?'Dato vero':'Dato falso'; "
    
    Presuppongo che tu dia piu' importanza nel caso l'utente decida di inserire true e tutti gli altri casi false compreso una stringa vuota. per l'asegnazione del valore di innerHTML devi vedere l'operatore ternare ( test ? ramo vero : ramo falso ; )
    nel caso tu debba invece selezionare usi la if e marchi la proprieta selected all'opzioone desiderata
    esempio
    
    if( document.getElementById('dato').value=='true')
    { document.getElementById('sel1').selected=true;
      document.getElementById('sel1').selected=false;
    } else { // scrivi le istruzioni sopra con i valori invertiti }
    
    per implementare il codice javascript devi obbligatoriamente avere conoscenze del dom perche ogni tag html viene rappresentato da oggetti del dom con struttura ad albero e mette a disposizione una grande quantita' di proprieta' attributi e metodi che alla fine rispechiano quello che il browser fa per visualizzare un elemento.
    http://www.w3schools.com/jsref/prop_option_selected.as
    Abuso molto di questo sito per le refenze sia in html, css, javascript, dom etc
  • Re: Modifica campo SELECT attraverso pulsante

    Ti ringrazio per la risposta, in realtà io avevo posto il mio problema nel modo più semplice possibile, ma credo di dover entrare nei dettagli.
    Allora, ho una tabella MySQL con due colonne: Nazioni e Capitali...Ad ogni nazione corrisponde la capitale.
    L'utente digita una nazione nella textbox

    <input type="text" value="<?php echo $nazione; ?>" name="nazione">

    Io vorrei che clickando sul pulsante...

    <button type="submit" name="trova" onclick="..???..">Trova la capitale</button>

    ...nella select mi compaia la capitale corrispondente (quindi la variabile $nazione deve essere passata ad una query, che ho già fatto, MySQL la quale mi permette di estrapolare una varabile $capitale contenente la capitale della nazione digitata, che andrà poi a popolare la select)

    Da quello che ho capito, dentro 'onClick' del button devo richiamare una funzione Javascript che conterrà codice javascript/PHP per l'interrogazione al database e la restituzione della variabile $capitale (che poi deve andare a finire nella select)....Ma non so proprio come mettere assieme tutto questo....
  • Re: Modifica campo SELECT attraverso pulsante

    Mi spiace ma non conosco i db, devo ancora studiarli, e il php ho iniziato solamente a vederlo.
    Posso darti un suggerimento?? Da come lo spieghi ora sarebbe preferibile dedicare le opzioni di select alle nazioni in quanto la capitale restituita e' una sola, mentre le varie nazioni corrispondono di piu a un menu si selzione, o magari con suggerimento durante la digitazione della nazione.
    Non credo che un evento possa attivare direttamente del codice php, c'e' una diffenza sostanziale da distinguere tra js e php, js e' lato client( browser ) e php lato server( server dove ospita ), praticamente il primo viene eseguito nel pc, mentre il secondo esclusivamente sul server quindi un evento non viene inviato al server.
    per la visualizzazione della capitale basterebbe una campo qualunque per visualizzare il testo senza la necessita' di un input di tipo text.
    Visto che parli di php presuppongo che tu conosca le basi quindi ti suggerirei:
    
    <label for="nazione">Nazione:</label>
    <select id="nazione">
    <?php
    
       for( i=0; i<nazioni.length; i++ ) {
         echo = <option> . nazioni[i] . </option>;   // ricrea tutte le nazioni come selezione
    
    ?>
    </select>
    
    
    per quanto riguarla la riga del for devi riadattarla al codice php che conosco molto in superficie e so che un array non funziona in questo modo in php la mia e' semantica java/javascript.
    per poi settare la richiesta da fare al db invece ti rimando a questa pagina per scrivere la funzione onclick
    http://www.w3schools.com/jsref/prop_select_selectedindex.asp
    e attraverso il parametro ottenuto in questo modo setti oportunamente il testo da visualizzare nel punto dove dai deciso.
  • Re: Modifica campo SELECT attraverso pulsante

    Un sistema che potresti usare per la visualizzazione potrebbe essere questa:
    
    <p> Capitale: <span id="capitale"></span> </p>
    
    recuperi con javascript il campo di span attraverso il suo id e inserisci la risposta della interrogazione al db li dentro.
    Questi segnaposto sono sempre molto utili per situazioni del genere, e se non ho capito male la capitale non e' un campo modificabile, quindi sarebbe uno spreco usare un campo di testo editabile per poi dover usare css e cancellare bordi modificare il bg-color e renderlo non editabile.
    Ti suggerisco anche questa miniguida per l'autocompletamente di una parola con uso di jQuery UI scaricabile gratuitamente o accessibile anche direttamente online da google o jquery.
    http://www.mrwebmaster.it/jquery/guide/autocomplete-widget_1069.html
  • Re: Modifica campo SELECT attraverso pulsante

    Grazie ancora per aver risposto...
    mi spiace ma non conosco i db, devo ancora studiarli, e il php ho iniziato solamente a vederlo.
    Posso darti un suggerimento?? Da come lo spieghi ora sarebbe preferibile dedicare le opzioni di select alle nazioni in quanto la capitale restituita e' una sola, mentre le varie nazioni corrispondono di piu a un menu si selzione, o magari con suggerimento durante la digitazione della nazione.
    Lo so, sarebbe tutto più semplice, ma è una richiesta che mi è stata fatta, quindi devo attenermi....Cmq visto che non riesco a venirne a capo e che, come dici tu:
    Non credo che un evento possa attivare direttamente del codice php, c'e' una diffenza sostanziale da distinguere tra js e php, js e' lato client( browser ) e php lato server( server dove ospita ), praticamente il primo viene eseguito nel pc, mentre il secondo esclusivamente sul server quindi un evento non viene inviato al server.
    la cosa mi sembra complicata o addirittura irrealizzabile, avrei pensato di risolvere la cosa nel seguente modo:
    Digito la nazione nell' input box
    <input type="text" value="<?php echo $nazione; ?>" name="nazione">
    Clicco sul seguente pulsante che mi apre un popup:
    <INPUT onclick="window.open('ricerca.php?nazione=$nazione', 'Ricerca', 'toolbar=no,location=no,directories=no,status=no,menubar=no,width=300,height=300')" type=button value="ricerca">
    Nel quale verrà visualizzata la capitale relativa.
    Come hai notato, quel pulsante mi rimanda alla pagina ricerca.php che contiene l'interrogazione della query e la visualizzazione del risultato.
    Il fatto è che questa pagina che riceve la nazione attraverso l'istruzione
    $nazione = $_POST['nazione'];
    mi dà errore proprio in questa riga ("Notice: Undefined index: nazione...etc...."

    se invece uso GET, cioè:
    $nazione = $_GET['nazione']
    lo accetta, ma come se il valore fosse nullo.
    Perchè??
  • Re: Modifica campo SELECT attraverso pulsante

    Intanto ti posso rispondere alla parte finale del motivo per cui con $_GET lo trovi, semplicemente perche' una richiesta fatta al server via URL e' classificato come method get, mentre uno fatto richiamando la pagina solamente con il nome del file e passi in un altro sistema i parametri il metodo si chiama post e ristrovi le informazioni su $_POST, l'ho appena letto qui
    http://www.w3schools.com/php/php_get.as
    http://www.w3schools.com/php/php_post.as
    quindi richiamando la pagina sotto aprendo la finestra usi un metodo get
    per quanto riguarda la variabile la spiegazione e' molto semplice, come ti dicevo il codice php e' eseguito lato server quindi una volta arrivato il tuo pc non esistono piu le sue variabili, quindi quando richiami $nazione con codice js stai tentando di accedere a una variabile di javascript che non hai mai creato e quindi undefined, che passato a php viene tradotto probabilmente a null, o forse rimane ugualmente a undefined, quindi quello che devi fare e' sostituire e' recuperare il valore del campo di testo, usa il getElementsByName(' '), e recuperare il suo valore.
    Ricorda sempre che il codice php rimane nel server, fai finta che che il server e il pc client siano divisi da un oceano, php, e javascript siano 2 innamorati, e' un mondo dove non esistono imbarcazioni abbastanza grandi se non per trasportare piccoli messaggi fatti di html. php non puo attraversare l'oceano morirebbe quindi scrive messaggi in html e li manda a javascript che li puo leggere perche conosce il codice, e per mandare la risposta o altre richieste sempre in html. Ma i due non si possono mai vedere solo sentirsi attraverso gli html.
    Non so se ti sia piu' chiaro ora, ho cercato di imitare il mio prof di mate che inventa sempre delle storie strambe e belle che spiegano bene i concetti strappando anche un sorriso.
  • Re: Modifica campo SELECT attraverso pulsante

    Pero questa discussione sta diventando troppo su php e questo non sarebbe propriamente il posto ideale, se hai dubbi in merito prova a postare una richiesta li e troverai qualcuno piu' competente che ti sapra' aiutare meglio. E hai bisogno di chiarire meglio le differenze tra gli script server/client e approfondire un po di piu.
    Dimenticavo, non serve aprire una nuova finestra che disturba ti ho gia suggerito la soluzione sopra, gli script lato client posso fare qualunque cosa di legale con gli elementi visualizzati dal browser, anche modificarne il contenuto, non c'e' bisogno che avvenga lato server se non propriamente necessario.
  • Re: Modifica campo SELECT attraverso pulsante

    Grazie per le risposte ma non sono riuscito a capire come e dove inserire getElementsByName(' ').
  • Re: Modifica campo SELECT attraverso pulsante

    Da questo suppongo che non conosci il javascript, o che conosci approssimativamente la sintassi.
    Ti consiglio di dare una letta a questa guida:
    http://www.w3schools.com/js/default.as
    e' abbastanza completa e fa capire come funziona. Se poi riesci a fare un giro veloce su
    http://www.w3schools.com/htmldom/default.as
    questo completa javascript per lo scripting lato client, praticamente obbligatorio se vuoi imparare a gestire le pagine web in modo dinamico come vorresti fare.
  • Re: Modifica campo SELECT attraverso pulsante

    Da questo suppongo che non conosci il javascript, o che conosci approssimativamente la sintassi.
    Infatti, conosco un po' di sintassi, niente più.
    Ti consiglio di dare una letta a questa guida:
    http://www.w3schools.com/js/default.as
    e' abbastanza completa e fa capire come funziona. Se poi riesci a fare un giro veloce su
    http://www.w3schools.com/htmldom/default.as
    questo completa javascript per lo scripting lato client, praticamente obbligatorio se vuoi imparare a gestire le pagine web in modo dinamico come vorresti fare.
    Finora ho gestito le cose solo tramite PHP/HTML, adesso a me serviva una soluzione a portata di mano perchè purtroppo non ho tempo per leggere guide in questo momento, comunque ti ringrazio per le risposte.

    Se nessuno può aiutarmi con qualche riga di codice già fatta, penso che questo topic si possa chiudere.
  • Re: Modifica campo SELECT attraverso pulsante

    Riassunto veloce, se puo esserti utile, tutto il codice compreso nei tag <script> sono dei script lato client che vengono eseguiti al caricamento della pagina, escluse le funzione che vengono eseguite solo al loro richiamo, gli script sono perfettamente capaci di manipolare la virtualizzazione delle pagine html fatte dal dom(per questo ti suggerivo di leggerlo).
    Molto spesso e' preferibile scrivere il codice dentro una unica funzione che viene richiamato al caricamento completo della pagina, e viene inserito nell'head dell'html. le funzioni scritte dentro il tag html possono essere richiamati anche dagli eventi degli elementi tipo onclick, e verranno eseguiti solo al richiamo effettuatto da essi. nel tuo caso ti basterebbe inserire un tag script alla fine della pagina in modo da essere sicuri che tutto il documento sia gia stato caricato, e quindi quando richiami la funzione dall' onclick tutti gli eventuali elementi che vuoi richiamare esistono.
    
    <p id="esito">Nazione: <span id="nazione"></span>, Capitale: <span id="capitale"></span><p>
    
    <script>
       var nazione = document.getElementById('nazione");   // elemento che rappresenta il segnaposto span della nazione
       var capitale = document.getElementById('capitale');   // elemento che rappresenta il segnaposto span della capitale
       // ora tutto quello che ci fara con questi 2 lementi si vedra anche agli elementi del documento html relativi all'id
      nazione.innerHTML = '<strong>Italia</strong>';// inserisci testo html o semplice stringa per cambiare il contenuto
      capitale.innerHTML = 'Roma';
      var testo = document.createTextNode('Roma');
      capita.appendChild(testo);
    </script>
    </body> // volendo potresti anche inserirlo dopo body
    </html>
    
    In questo esempio ho ricreato 2 modi differenti di cambiare il testo dentro a un elemento html, cambiare il testo con innerTEXT ogni tanto mi ha dato problemi, quindi preferisco in ogni caso usare innerHTML, una buona pratica sarebbe usare il metodo piu' lungo creando un nodo di tipo testo e poi appenderlo, che e' quello che viene fatto dal browser.
    poi per recuperare il valore di nazione inserito puoi usare lo stesso metodo. recuperi il tag che ti interessa, e visto che usi i name dovrai usare il document.getElementsByName() che restituisce una lista di elementi html, e nel tuo caso ne esiste uno solo quindi recuperi semplicemente con [0], estrapoli il valore con l'attributo value.
    
      var NazInserito = document.getElementByName('dato')[0].value; // recuperi gli elementi con name dato e prendi il primo elemento della listo, e richiedi il suo valore
      nazione.innerHTML = NazInserito;   // inserisci il valore inserito da utente dentro al segnaposto span della nazione.
    
  • Re: Modifica campo SELECT attraverso pulsante

    Sei stato gentilissimo, ma non capisco come faccio a passare il dato ad una funzione PHP che, interrogando una query a partire da questo dato, mi restituisce un risultato.
    Cmq ho già rinunciato, grazie lo stesso
Devi accedere o registrarti per scrivere nel forum
12 risposte