come ripristinare i dati di un form

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
salve a tutti,

sto cercando di realizzare un form,
che, a seconda della voce selezionata in un input <select>,
attivi un altri campi di input di tipo text.
poi i dati della form sono inviati la medesimo file .php,
che in caso di una errore, deve ricaricare i dati nei rispettivi campi di input,
e riattivare i campi text.

ma facendo un test non riesco a scatenare l'evento che mi attiva i campi di tipo text.

qualcuno mi può aiutare????

grazie in anticipo,
Claudio
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, posta il codcie che hai scritto, satà più facile aiutarti
 

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
file select.php:
PHP:
<?php
$isError='';
$errSelect='';

$field_select='';


if( $_REQUEST && isset($_REQUEST['submit']) ){
    if( $_REQUEST['submit'] == 'send') {

        $errSelect = 'campo obbligatorio, prego selezionare.';

        if(isset($_REQUEST['sendSelect'])){
            if ($_REQUEST['sendSelect']) {
                $field_select = $_REQUEST['sendSelect'];
                $errSelect = '';
            }
        }

        // per test genero un errore
        $isError =  '1' ;
    }
}
?>

HTML:
<HEAD>
    <title>Test 1</title>
    <link rel="stylesheet" type="text/css" href="../dist/css/jquery-ui.min.css">
    <script type="text/javascript" src="../dist/js/jquery.min.js"></script>
    <script type="text/javascript" src="../dist/js/jquery-ui.min.js"></script>

    <!--  script di gestione dei campi della form  -->
    <script type="text/javascript" src="../dist/js/form.js"></script>
</HEAD>

<body >
  <div class="page-content" id="">
    <div class="row widget-box" id="view-input-fields">

      <?php $url = basename($_SERVER['PHP_SELF']); ?>
      <form action="select.php"  method="get" id="form-input">

        <fieldset id="fields-input">
          <div id="field_select">
            <label> Campo Selezione </label>
            <div >
              <div >
                <select  id="input_select" name="sendSelect">
                   <option value="">scegli una voce...</option>
                   <?php echo _popolaSelect($cfg); ?>
                </select>
              </div>
              <?php if($errSelect) echo "<label>$errSelect</label>"; ?>
            </div>
          </div>

          <div id="field_text">
            <label>campi test </label>
              <div >
                <div >
                  <input id="input_text" name="sendText"  <?php if($isError) echo "value=\"$field_text\""; ?>  type="text"  placeholder="999.99">
                </div>
                <?php if($errText) echo "<label>$errText</label>"; ?>
              </div>
            </div>
          </fieldset>

          <fieldset>
            <div class="">
              <button type="submit" id="submitSend" name="submit" value="send">Invia</button>
            </div>
          </fieldset>

        </form>
      </div> 

      <div>
        <p id="t1"></p>
        <p id="t2"></p>
        <p id="t3"></p>
      </div>

    </div>

<?php if($isError){ ?>
    <script type="text/javascript">
    jQuery(function($){
        var selected = $(':selected',  $('#input_select'));
        $("#t1").html( " test1 :"  + selected.val()  );
        input_select_change(selected);
    });

    </script>
<?php } ?>

</body>
</html>

PHP:
<?php  
/*    questa funzine è alla fine del file select.php, dopo il codice html  */
function _popolaSelect($cfg){
  global $isError, $field_select;

  $options = '';
  $table = $cfg['table']['voci'];

  $itemsVoce    = Table::Select("SELECT * FROM {$cfg['table']['voci']} ORDER BY id");

  foreach ($itemsVoce as $item){
    $selected="";
    if( $isError && ($field_select == $item->id) ){
        $selected="  selected=\"\"";
    }

    $options .= "  <option value=\"$item->id\" $selected >  $item->nome   </option>".chr(10);
  }

  return $options;
}
?>
 
Ultima modifica:

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
file form.js
PHP:
jQuery(function($) {

    //--------------------------------------------------------
    //    caricamento della pagina    **
    $(document).load("pagecontainerbeforeload", function(){
        $('#form-input').find('fieldset').find('input').prop('disabled', true);
        $('#form-input').find('fieldset').find('select').prop('disabled', true);

        $('#input_select').prop('disabled', false);
    });
    //--------------------------------------------------------



    //--------------------------------------------------------
    //    selezione del campo "select"    **
    $('#input_select').change(function() {
        var selected = $(':selected', this);
        input_select_change(selected);
    });


    function input_select_change(selected) {
        $("#t3").html( " test3 :"  + selected.val()  );
        $("#input_text").prop('disabled', false);
    }
    //--------------------------------------------------------


});
 

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
dopo aver premuto il pulsante "invia",
viene aggiunto in calce alla pagina:
PHP:
<script type="text/javascript">
    jQuery(function($){
        var selected = $(':selected',  $('#input_select'));
        $("#t1").html( " test1 :"  + selected.val()  );
        input_select_change(selected);
    });
</script>

perche $isError è vera,

il problema è che non viene chiamata la funzione "input_select_change(selected)"
che mi abilita il campo di input text.
 

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
dimenticavo...

la tabella MySql che serve per popolare il select ha 2 campi:

id (int)
nome (char)


Claudio.
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ciao Claudio,
la variabile "$cfg" usata per chiamare la "popola select", è orfana, non le viene assegnato valore,
la select è di conseguenza vuota
 

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
ciao marino,

ti ringrazio ancora per l'aiuto nell'altro post.

mi è sfuggita quando ho creato l'esempio,
in questo caso non serve a nulla, è usata solo nella query per il nome della tabella da leggere.

la tabella ha due campi, l' ID e il NOME


ciao Claudio
 

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
sottopongo la query da lanciare per creare la tabella di test
PHP:
CREATE TABLE IF NOT EXISTS `voci_select` (
  `id` int(10) NOT NULL,
  `nome` varchar(256) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `voci_select` (`id`, `nome`) VALUES
(1, 'voce 1'),
(2, 'voce 2'),
(3, 'voce 3'),
(4, 'voce 4'),
(5, 'voce 5'),
(6, 'voce 6'),
(7, 'voce 7'),
(8, 'voce 8'),
(9, 'voce 9'),
(10, 'voce 10'),
(11, 'voce 11'),
(12, 'voce 12'),
(13, 'voce 13'),
(14, 'voce 14'),
(15, 'voce 15'),
(16, 'voce 16'),
(17, 'voce 17'),
(18, 'voce 18'),
(19, 'voce 19'),
(20, 'voce 20');

--
-- Indici per le tabelle `vociSelect`
--
ALTER TABLE `voci_select`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `id` (`id`);
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ciao,
non sono riuscito a riprodurre le funzioni che vuoi realizzare, ma vedi se questo suggerimento ti aiuta nell'impasse dell'evento
PHP:
<HEAD>
    <title>Test 1</title>
    <link rel="stylesheet" type="text/css" href="../___jquery/jquery-ui.min.css">

    <script type="text/javascript" src="../___jquery/jquery.min.js"></script>
    <script type="text/javascript" src="../___jquery/jquery-ui.min.js"></script>

    <script type="text/javascript">
	$(document).ready(function(){
		var selected = '';

		$("select#input_select").change(function(){ ScegliCampi(); });

		function ScegliCampi() 
		{
			selected = $("select#input_select option:selected").attr('value');
			alert('input_select : '+selected);
		        $("#t3").html( "test3 : "+selected );
			return;
		}
	});
    </script>

    <script type="text/javascript" src="form.js"></script>
</HEAD>

<body >
  <div class="page-content" id="">
    <div class="row widget-box" id="view-input-fields">

      <?php $url = basename($_SERVER['PHP_SELF']); ?>
      <form action="select.php"  method="get" id="form-input">

        <fieldset id="fields-input">
          <div id="field_select">
            <label> Campo Selezione </label>
            <div >
              <div >
                <select  id="input_select" name="sendSelect">
                   <option value="">scegli una voce...</option>
                   <?php echo _popolaSelect($cfg); ?>
                </select>
              </div>
              <?php if($errSelect) echo "<label>$errSelect</label>"; ?>
            </div>
          </div>

          <div id="field_text">
            <label>campi test </label>
              <div >
                <div >
                  <input id="input_text" name="sendText"  <?php if($isError) echo "value=\"$field_text\""; ?>  type="text"  placeholder="999.99">
                </div>
                <?php if($errText) echo "<label>$errText</label>"; ?>
              </div>
            </div>
          </fieldset>

          <fieldset>
            <div class="">
              <button type="submit" id="submitSend" name="submit" value="send">Invia</button>
            </div>
          </fieldset>

        </form>
      </div> 

      <div>
        <p id="t1"></p>
        <p id="t2"></p>
        <p id="t3"></p>
      </div>

    </div>

<?php if($isError){ ?>
    <script type="text/javascript">
    jQuery(function($){
	alert('sono qui');
        var selected = $(':selected',  $('#input_select'));
        $("#t1").html( " test1 :"  + selected.val()  );
        input_select_change(selected);
    });

    </script>
<?php } ?>

</body>
</html>

<?php
function _popolaSelect($cfg){
  global $isError, $field_select;

  $options = '';
/*
  $table = $cfg['table']['voci'];

  $itemsVoce    = Table::Select("SELECT * FROM {$cfg['table']['voci']} ORDER BY id");

  foreach ($itemsVoce as $item){
    $selected="";
    if( $isError && ($field_select == $item->id) ){
        $selected="  selected=\"\"";
    }

    $options .= "<option value=\"$item->id\" $selected >  $item->nome</option>".chr(10);
  }
*/
  $options .= "<option value='01'>item_01</option>";
  $options .= "<option value='02'>item_02</option>";
  $options .= "<option value='03'>item_03</option>";
  return $options;
}
?>
 

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
quello che voglio ottenere è che alla selezione di una voce del campo select
si abiliti il campo di Text.

alla perssione del pulsante invia, i dati del form vengono eleborati,
(dal codice php in testa al file) e se c'è un errore
(nell'esempio simulato forzando $isError = '1' ),
il valore del select viene ricaricato e di conseguenza il
campo di edit deve venire nuovamente abilitato.
visto che nel select è stato caricato un valore.


dopo l'invio dei dati del form,
riesco a ricaricare il valore nel select,
ma non riesco a richiamare la funzione per abilitare il campo di text.

ho provato con :
$('#input_select').trigger("change");
$('#input_select').change();

ma niente da fare....

hai qualche dritta per risolvere

ciao Claudio
 

clodiny

Nuovo Utente
4 Nov 2015
27
0
0
esempio rivisto

ho effettuati i test si su chrome 47 che su firefox 42.0
ed il risultato è il medesimo, al caricamento della pagina dopo la pressione del pulsante "invia",
la funzione "input_select_change(selected)" in form.js non viene richiamata.


per questo ho rivisto l'esempio togliento il caricamento del campo select da DB.
con la speravaza di essere più chiaro.

saluti Claudio

---------------------------------------------------------------
allego un file zip contenente i files di esempio
Vedi l'allegato select.zip
 
Discussioni simili
Autore Titolo Forum Risposte Data
M ripristinare totali nella modalità edit post Javascript 0
glm2006ITALY Wordpress: ripristinare un backup WordPress 0
Shyson Ripristinare funzione PHP 2
asevenx Ripristinare template e-commerce a pagamento WordPress 6
M Eliminare Grub e ripristinare l'avvio normale di Windows Windows e Software 0
F ripristinare status.msi Windows e Software 1
C photoshop:ripristinare i livelli Photoshop 3
O Ripristinare LILO Windows e Software 2
max75 query su due tabelle e dati doppioni MS Access 2
K Form che manda dati doppi PHP 1
T problemi con dati menu a tendina HTML e CSS 2
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
V dati scomparsi dal sito HTML e CSS 3
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
A Stampare dati da form PHP 15
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0
otto9due $_FILE non passa i dati dal form PHP 1
N dati tabella non presi PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Assegnare dati fetch request ad una variabile globale Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
A invio massivo dati a file php Javascript 4
M Inviare dati nel db dopo risposta alert PHP 0
A recuperare i dati passati nel post PHP 1
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
J Form inserimento dati in database Ajax 1
D Recupero dati da HDD esterno Hardware 0
L non duplicare dati in stato "aggiornamento" PHP 6
L inserire dati multi livello PHP 8
L input (rilevare cambio dati) PHP 3
L input dati con inser into select ? PHP 4
W Invio Dati ad un altra pagina Classic ASP 1
A Mostrare dati database per pagine PHP 2
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
S Gestire scelta dropdown con dati da Mysql PHP 2
C Estrarre dati stringa Sql Database 1

Discussioni simili