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.041
192
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.041
192
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
N dati tabella non presi PHP 0
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
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
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
W Evitare ridondanza dei dati Classic ASP 3
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 sql importazione dati MySQL 0
C Aggiungere blocco dati Javascript 6
G inserire dati automaticamente in mysql PHP 0
Tommy03 Unire dati da due tabelle MySQL 5
S Trasferire dati sulle pagine del sito PHP 7
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
L inviare i dati di un form ad un database PHP 6
Alex_70 Inserimento dati a cascata PHP 204
T Da xsd a xml ed inserimento dati in excel XML 0
G Rendere dati di una tabella mysql link PHP 22
D Chiave unica in estrazione dati da array php PHP 0
L modifica dati. PHP 1
C Problema con dati meteo xml XML 1

Discussioni simili