Passaggio codice html a javascript

vasomik

Nuovo Utente
14 Mar 2017
31
0
6
Ciao a tutti,

devo passare del codice html a jQuery tramite php.
Faccio l'esempio concreto.

Tramite l'interrogazione del DB creo il codice html di una select e lo metto in una variabile. Il contenuto di questa variabile devo portarlo nel codice javascript. Quello che fa il codice jQuery è replicare la select, su righe diverse. Posto del codice per una più semplice comprensione:
la variabile PHP $SelectMezzi contiene questo codice:
Codice:
<div><select name="RimborsoBiglietti[]" onchange="RimborsoBiglietti(this)"><option value="Vuoto">Vuoto %</option><option value="Treno">Treno 10 %</option><option value="Nave">Nave 10 %</option><option value="Aereo">Aereo 5 %</option><option value="Pedaggio Autostradale">Pedaggio Autostradale 0 %</option><option value="Autolinea">Autolinea 0 %</option><option value="Metro">Metro 0 %</option><option value="Taxi">Taxi 0 %</option><option value="Mezzo Proprio Aut.">Mezzo Proprio Aut. 0 %</option><option value="Mezzo Proprio NA">Mezzo Proprio NA 0 %</option><option value="Eccedenza Bagaglio">Eccedenza Bagaglio 0 %</option><option value="Altro">Altro 0 %</option></select></div>
Codice:
$(document).ready(function() {

    var max_fields      = 200;

    var wrapper         = $(".containerRimborsi");

    var add_button      = $(".add_form_field_rimborsi");

    var SelectMezzi = "<?php json_encode($SelectMezzi); ?>";

    var x = 1;

    $(add_button).click(function(e){

        e.preventDefault();

        if(x < max_fields){

            x++;

            $(wrapper).append('SelectMezzi'); //add input box

        }

  else

  {

  alert('You Reached the limits')

  }

    });

 

    $(wrapper).on("click",".delete", function(e){

        e.preventDefault(); $(this).parent('div').remove(); x--;

    })

});
Quando provo il codice jQuery premendo il tasto per la generazione della nuova select a video ottengo la scritta SelectMezzi.

Qualcuno sa aiutarmi?

vasomik
 

linoma

Utente Attivo
1 Mar 2017
77
4
8
Se appendi la stringa SelectMezzi a wrapper. Tra l'altro la tua var SelectMezzi contiene un array json invece di una stringa HTML
 

linoma

Utente Attivo
1 Mar 2017
77
4
8
Codice:
$(wrapper).append('SelectMezzi');
con questa riga appendi la scritta SelectMezzi non la tua variabile SelectMezzi. E tra l'altro la tua variabile SelectMezzi contiene un array JSON e se nn erro jQuery non usa JSON per l'inserimento di HTML, usa o una stringa HTML o un array di nodi HTML
 

vasomik

Nuovo Utente
14 Mar 2017
31
0
6
Codice:
$(wrapper).append('SelectMezzi');
con questa riga appendi la scritta SelectMezzi non la tua variabile SelectMezzi. E tra l'altro la tua variabile SelectMezzi contiene un array JSON e se nn erro jQuery non usa JSON per l'inserimento di HTML, usa o una stringa HTML o un array di nodi HTML
Ok, chiaro, ma a questo punto non so come recuperare la variabile in modo che tale codice mi renda la select.
Se nella riga sopra metto il codice html viene regolarmente eseguito, quando cerco di passare la variabile php, che contiene lo stesso codice, il risultato è differente.
 

linoma

Utente Attivo
1 Mar 2017
77
4
8
Intanto invece di 'SelectMezzi' usa solo SelectMezzi. Poi nella variabile SelectMezzi devi mettere tanti tags <option></option> quanti sono appunto le opzioni da inserire nella select. Poi se $(wrapper) è la tua select invence di append devi usare html. Altrimenti devi postare il tuo codice html
 

vasomik

Nuovo Utente
14 Mar 2017
31
0
6
Intanto invece di 'SelectMezzi' usa solo SelectMezzi. Poi nella variabile SelectMezzi devi mettere tanti tags <option></option> quanti sono appunto le opzioni da inserire nella select. Poi se $(wrapper) è la tua select invence di append devi usare html. Altrimenti devi postare il tuo codice html
Ciao,

ho provato a fare le prove con le indicazioni che mi hai dato ma non riesco a tirarci fuori le gambe.
Ricapitoliamo, il codice che ho postato nel primo messaggio funziona perfettamente se questa riga è statica
Codice:
$(wrapper).append('<div><select name="RimborsoBiglietti[]" onchange="RimborsoBiglietti(this)"><option value="Treno">Treno 10%</option><option value="Nave">Nave 10%</option><option value="Aereo">Aereo 5%</option><option value="Autolinea">Autolinea 0%</option><option value="Metro">Metro 0%</option><option value="Taxi">Taxi 0%</option><option value="MPA">Mezzo Proprio Aut.</option><option value="MPNA">Mezzo Proprio NA</option><option value="EccedenzaBagablio">Eccedenza bagaglio 0%</option><option value="Altro">Altro 0%</option></select>&nbsp;&nbsp;<input type="text" name="PercRimborso[]" size="3" maxlength="3" onchange="RimborsoBiglietti(this)"> % a carico privati <input type="checkbox" name="BigliettoCaricoPrivati[]" onchange="RimborsoBiglietti(this)" value="SI" /> Importo <input type="text" name="ImportoBiglietto[]" size="7" onchange="RimborsoBiglietti(this)" > € Spettanza (Importo + %) <input type="text" name="RimborsoSpettante[]" size="7" > € <a href="#" class="delete">Cancella</a></div>'); //add input box
Io voglio, invece, renderla dinamica prendendo i dati dal DB (perché in futuro le voci potrebbero aumentare), caricando il codice html in una variabile php, $SelectMezzi, appunto. Questo è il codice con il quale creo l'html che passo alla variabile.
Codice:
$SelectMezzi = "<div><select name=\"RimborsoBiglietti[]\" onchange=\"RimborsoBiglietti(this)\">";

for ($i=1; $i<=count($ARR_Mezzi);$i++)

{

$SelectMezzi .= "<option value=\"$ARR_Mezzi[$i]\">$ARR_Mezzi[$i]" ." " ."$ARR_PercRimb[$i] %</option>";

}
$SelectMezzi .= "</select></div>";
Come si vede le voci vengono immagazzinate in un array e ciclandole in un for creo quello che mi serve.

Questo è il contenuto della variabile $SelectMezzi, stampata a video utilizzando htmlentities:
Codice:
<div><select name="RimborsoBiglietti[]" onchange="RimborsoBiglietti(this)"><option value="Vuoto">Vuoto %</option><option value="Treno">Treno 10 %</option><option value="Nave">Nave 10 %</option><option value="Aereo">Aereo 5 %</option><option value="Pedaggio Autostradale">Pedaggio Autostradale 0 %</option><option value="Autolinea">Autolinea 0 %</option><option value="Metro">Metro 0 %</option><option value="Taxi">Taxi 0 %</option><option value="Mezzo Proprio Aut.">Mezzo Proprio Aut. 0 %</option><option value="Mezzo Proprio NA">Mezzo Proprio NA 0 %</option><option value="Eccedenza Bagaglio">Eccedenza Bagaglio 0 %</option><option value="Altro">Altro 0 %</option></select></div>
Spero tu o qualsiasi altro utente possa darmi la soluzione.
Se serve altro codice chiedete pure!!

vasomik
 

linoma

Utente Attivo
1 Mar 2017
77
4
8
Dovrebbe andare meglio se cambi questa riga e usi nel codice php ' invece di "
Codice:
var SelectMezzi = "<?php json_encode($SelectMezzi); ?>";
in

Codice:
var SelectMezzi = "<?php echo $SelectMezzi; ?>";
e usi questa riga

Codice:
$(wrapper).append(SelectMezzi);
 
Ultima modifica:

vasomik

Nuovo Utente
14 Mar 2017
31
0
6
Dovrebbe andare meglio se cambi questa riga e usi nel codice php ' invece di "
Codice:
var SelectMezzi = "<?php json_encode($SelectMezzi); ?>";
in

Codice:
var SelectMezzi = "<?php echo $SelectMezzi; ?>";
e usi questa riga

Codice:
$(wrapper).append(SelectMezzi);
Ciao,

ho fatto come mi hai indicato, riporto il codice:

PHP (con gli apici ')
Codice:
$SelectMezzi = '<div><select name=\"RimborsoBiglietti[]\" onchange=\"RimborsoBiglietti(this)\">';
for ($i=1; $i<=count($ARR_Mezzi);$i++)

{

$SelectMezzi .= '<option value=\"$ARR_Mezzi[$i]\">$ARR_Mezzi[$i]" ." " ."$ARR_PercRimb[$i] %</option>';

}
$SelectMezzi .= '</select></div>';
JAVASCRIPT (senza json_encode)
Codice:
$(document).ready(function() {

    var max_fields      = 200;

    var wrapper         = $(".containerRimborsi");

    var add_button      = $(".add_form_field_rimborsi");

    var SelectMezzi = '<?php echo $SelectMezzi; ?>';


    var x = 1;

    $(add_button).click(function(e){

        e.preventDefault();

        if(x < max_fields){

            x++;

           
        $(wrapper).append(SelectMezzi);

        }

  else

  {

  alert('You Reached the limits')

  }

    });

 
    $(wrapper).on("click",".delete", function(e){

        e.preventDefault(); $(this).parent('div').remove(); x--;

    })

});
Il risultato è migliore, la select viene creata ma i suoi valori all'interno sono:

Codice:
$ARR_Mezzi[$i]" ." " ."$ARR_PercRimb[$i] %