script php e javascript

  • Creatore Discussione Creatore Discussione Vera
  • Data di inizio Data di inizio
Stato
Chiusa ad ulteriori risposte.

Vera

Utente Attivo
3 Giu 2014
76
1
8
Ho questi due script, il secondo con l'alert mi visualizza il campo cdmate... e fino qui tutto bene. Ma quando vado a chiamare un nuovo javascript (planningPerMateria), con il successivo alert (vedi 3° script) non mi visualizza il codice materia. Come posso fare?

Grazie



1° script php:

HTML:
<form name='form1'><font color = "green"> Materia: </font>
<span id='box_materie'>
<select name="codice_materia" id='cdmate' onChange='Materia()'>
<option value="">Seleziona...</option></select>
</span>
</form>
 <input type='button' onclick='planningPerMateria("<?php  $sele = 'A'; ?>")' value=' Classi per materia ' style='width:140px' />

2° script

Codice:
function ScegliMateria(cdindi)
{ 
    document.getElementById("box_materie").innerHTML="<div align='center'>Attendi...</div>";
    var r = Math.random();
    myRequest = CreateXmlHttpReq(myHandler2);   
    myRequest.open("GET","materie.php?indirizzo="+escape(cdindi)+"&rand="+escape(r));
    myRequest.send(null);            
}

function Materia()
{
    var cdmate = $('select[name=codice_materia]').find("option:selected").text(); alert(cdmate);   
    document.form1.codice_materia.value=cdmate;
    document.getElementById("box_materie").style.display = "none";
}

3° script

Codice:
function planningPerMateria(selezi)
{ 
   var cdsede = document.getElementById("cdsede").value;  
   var desede = document.getElementById("desede").value;  
   var cdalli = document.getElementById("cdalli").value; 
   var nmalli = document.getElementById("nmalli").value; 
   var cdindi = document.getElementById("cdindi").value; alert(cdindi);  
   
   var cdmate = $('input[name=Materia]').val(); alert(cdmate);

in questo terzo script vorrei visualizzare con l'alert il coidce materia
 
Ultima modifica di un moderatore:
Ciao, non ho capito questo pezzo di codice
PHP:
onclick='planningPerMateria("<?php $sele = 'A'; ?>")'
me lo puoi spiegare ? perchè in realtà non stampi nessun parametro da passare alla funzione ma valorizzi una variabile php.
 
In realtà non serve, al momento, questa riga di codice:

HTML:
onclick='planningPerMateria("<?php $sele = 'A'; ?>")'

a me basta anche:

HTML:
onclick='planningPerMateria()'

ma non capisco dove sbaglio quando devo reperire il codice cdmate.

Grazie
 
La funzione prevede un parametro
Codice:
function planningPerMateria(selezi)
se non lo passi va in errore
 
Come ti dicevo se la chiamata alla funzione non ha nessun parametro, al momento,

HTML:
onclick='planningPerMateria()'

anche la relativa chiamata é della serie:

Codice:
function planningPerMateria()
{ 
   var cdsede = document.getElementById("cdsede").value;  
   var desede = document.getElementById("desede").value;  
   var cdalli = document.getElementById("cdalli").value; 
   var nmalli = document.getElementById("nmalli").value; 
   var cdindi = document.getElementById("cdindi").value; alert(cdindi);  
   
   var cdmate = $('input[name=Materia]').val(); alert(cdmate);
 
va bene, passiamo a questa istruzione
Codice:
$('input[name=Materia]').val();
ci vorrebbero gli apici per il name
Codice:
$("input[name='Materia']").val();
Hai incluso la libreria Jquery?
Nel codice che hai postato non vedo nessun input con name "Materia".
 
si, la libreria jquery é inclusa.

Che vuoi dire: Nel codice che hai postato non vedo nessun input con name "Materia". ??? In quale codice???

Io intanto correggo il tuo suggerimento per gli apici
 
In quale codice???
<form name='form1'><font color = "green"> Materia: </font>
<span id='box_materie'>
<select name="codice_materia" id='cdmate' onChange='Materia()'>
<option value="">Seleziona...</option></select>
</span>
</form>
<input type='button' onclick='planningPerMateria("<?php $sele = 'A'; ?>")' value=' Classi per materia ' style='width:140px' />
visto che richiami input[name=Materia] dovrebbe esserci
HTML:
<input name="Materia" ......
 
Ti vorrei postare il codice un pò più completo cosi da analizzare al meglio la problematica se tu sei disponibile.

Vera
 
Posta pure, e se lo hai online posta anche il link
 
Ok ti posto la parte del progetto relativa alla problematica. Tieni presente con non é ancora online.

Primo script:

HTML:
<form name='form0'><font color = "green">Indirizzo scolastico: </font>
<select name="indirizzo" id='cdindi' onChange='Indirizzo()'>
<option value="">Seleziona...</option>
<div id='box' style='width:200px; height:200px; display:none; padding:0px; margin:0px; margin-right:3px; float:right'></div>


<?php
$spazio = ' - ';
    
  for($j=0; $j<count($lista_indirizzi); $j++)
  {
      $cdindi = $lista_indirizzi[$j]['CDINDI'];
      $deindi = $lista_indirizzi[$j]['DEINDI'];
         
      if (trim($cdindi) == trim($selezionato))
      {
          
      }
      else
      {
      echo "<option value=".$cdindi.">".$cdindi." - ".$deindi."</option>";                        
      }
 }
  echo $cdindi;
?> 
</select></form>

<form name='form1'><font color = "green"> Materia: </font>
<span id='box_materie'>
<select name="codice_materia" id='cdmate' onChange='Materia()'>
<option value="">Seleziona...</option></select>
</span>
</form>
 

<input type='button' onclick='planningPerMateria("<?php  $selezi = 'A'; echo $selezi;?>")' value=' Classi per materia ' style='width:140px' />

Tieni presente che nella prima parte dove c'é poi il ciclo for non faccio altro che leggere il primo database relativo agli indirizzi scolastici e caricare il primo form. Il secondo form (cioé quello relativo alla lista delle materie) viene caricato in automatico (con il codice che ti riporto qui sotto) alla selezione di un qqualsiasi coidce indirizzo del primo form.

questo é il relativo javascript:

Codice:
function Indirizzo()
{ 
    var cdindi = $('select[name=indirizzo]').find("option:selected").text();   
    //document.form1.indirizzo.value=cdindi;  
    //document.getElementById("box").innerHTML = "<div align='center'>Attendi...</div>";
    //document.getElementById("box").style.display = "none";  
    ScegliMateria(cdindi);
}

function Pulisci(ogg){
    ogg.value='';
}

function ScegliMateria(cdindi)
{ 
    document.getElementById("box_materie").innerHTML="<div align='center'>Attendi...</div>";
    var r = Math.random();
    myRequest = CreateXmlHttpReq(myHandler2);   
    myRequest.open("GET","materie.php?indirizzo="+escape(cdindi)+"&rand="+escape(r));
    myRequest.send(null);            
}

function Materia()
{
    var cdmate = $('select[name=codice_materia]').find("option:selected").text();     
    document.form1.codice_materia.value=cdmate;
    document.getElementById("box_materie").style.display = "none";
}

e da questo puoi notare che la lista delle materie, alla selezione di un indirizzo scolastico, si carica dal php: materie.php.

In sostanza sia il caricamento degli indirizzi che delle materie funziona. Il problema rimane quando faccio la nuova chiamata allo script: planningPerMateria. In questo codice reperisco il codice indirizzo (semplicemente con un alert ma non il codice materia).

Codice:
function planningPerMateria(selezi)
{ 
    
   var cdindi = document.getElementById("cdindi").value; alert(cdindi);  
   
   var cdmate = $('input[name="Materia"]').val(); alert(cdmate);
 
Scrivendo cosi chiedi allo script di recuperare il valore del input con name "Materia"
Codice:
 var cdmate = $('input[name="Materia"]').val();
nel codice che hai postato non c'è nessun elemento con quel nome
Se vuoi recuperare il valore della select selezionata codice_materia dovresti scrivere
Codice:
var cdmate = $('select[name="codice_materia"]').val();
 
Ultima modifica:
Purtroppo il problema persiste con il codice da te indicato:

Codice:
var cdmate = $('select[name="codice_materia"]').val(); alert(cdmate);


l'alert me lo da vuoto e su strumenti/Sviluppo web/Console del browser in Mozilla Firefox mi dice:

TypeError: document.form1.codice_materia is undefined.

Mi spiace disturbarti ma devo assolutamente risolvere il problema.
Grazie
 
Mi dispiace ma proprio non riesco a capire la logica dei tuoi script
Lasciando perdere la chiamata ajax e la creazione della select, ad un certo punto dovresti trovarti in questa situazione
HTML:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">

    function Materia()
    {
        var cdmate = $('select[name=codice_materia]').find("option:selected").text();     
        document.form1.codice_materia.value=cdmate;
        document.getElementById("box_materie").style.display = "none";
    }
    function planningPerMateria()
    {     
        var cdmate = $('select[name="codice_materia"]').val(); alert(cdmate);
    }
</script>

<form name='form1'>
    <font color = "green"> Materia: </font>
    <span id='box_materie'>
        <select name="codice_materia" id='cdmate' onChange='Materia()'>
            <option value="">Seleziona...</option>
            <option value="Matematica">Matematica</option>
            <option value="Fisica">Fisica</option>
            <option value="Inglese">Inglese</option>
        </select>
    </span>
</form>
<input type='button' onclick='planningPerMateria()' value=' Classi per materia ' style='width:140px' />
la funzione materia() in pratica ha lo scopo di nascondere la select
cliccando sull'input mostri l'alert della scelta effettuata
non capisco
Lo script che ti ho postato in ogni caso funziona e non da errori.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili