Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70

    completamente automatico con n righe

    Ciao a tutti!

    Ho un form dove con il pulsante "inserisci nuova riga" mi crea, tramite javascript, una nuova riga che contiene, fra gli altri un campo select che quando viene scelto il prodotto automaticamente mi restituisce, sempre tramite javascipt, il prezzo in un campo
    codice:
    <input type="text" name="prezzo[]">
    e il codice prodotto.

    Il problema è che ora essendoci tanti
    codice:
    <input type="text" name="descrizione[]">
    il document.getElementsByName('descrizione[]') sembra non sapere quale prendere per far partire il javascript e soprattutto non so come indicargli a quale campo prezzo[] restituire il valore. Così non credo funzioni: formObj.codice[].value = valore;

    Forse non sono stato chiarissimo ma è difficile da spiegare a parole...spero che mi darete una mano...non so più che pesci pigliare!

  2. #2
    Ciao,
    se ho capito,
    puoi referenziare l'oggetto che ti serve passando alla funzione che fa da gestore
    l'oggetto this, ovvero il descrizione[] che scatena l'elaborazione.

    Sempre che io abbia capito.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    Scusa ma sono alle prime armi con javascript...potresti farmi qualche esempio??

    Grazie mille!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    Metto il codice:

    Parte che richiede alla pagina getClient.php di cercare il prodotto
    codice:
    <script type="text/javascript">
            var ajax = new sack();
    	var currentClientID=false;
    	function getClientData()
    	{
    		var clientId = document.getElementById('descrizione[]').value;
    		if(clientId!=currentClientID){
    			currentClientID = clientId
    			ajax.requestFile = 'getClient.php?getClientId='+clientId;	// Specifying which file to get
    			ajax.onCompletion = showClientData;	// Specify function that will be executed after file has been found
    			ajax.runAJAX();		// Execute AJAX function			
    		}
    		
    	}
    	
    	function showClientData()
    	{
    		var formObj = document.forms['offerta'];	
    		eval(ajax.response);
    	}
    	
    	
    	function initFormEvents()
    	{
    		document.getElementById('descrizione[]').onblur = getClientData;
    		document.getElementById('descrizione[]').focus();
    	}
    	
    	
    	window.onload = initFormEvents;
    </script>
    Pezzo del form (il form può essere di n righe tutte così)
    codice:
    <input size="15" type="text" id="codice[]" name="codice[]" disabled="disabled"><select name="descrizione[]" id="descrizione[]">
    <option value="0">Selezionare un prodotto</option>
    <option value="Prodotto1">Prodotto1</option>
    Pagina getClient.php
    codice:
    if(isset($_GET['getClientId'])){  
      $res = mysql_query("select * from prodotti where descrizione='".$_GET['getClientId']."'") or die(mysql_error());
      if($inf = mysql_fetch_array($res)){
      	
        echo "formObj.codice.value = '".$inf["cod"]."';\n";    
        echo "formObj.prezzo.value = '".$inf["prezzo_acquisto_standard"]."';\n";      
        
      }else{
        echo "formObj.codice.value = '';\n";    
        echo "formObj.prezzo.value = '';\n";    
         
      }    
    }
    Grazie!!

  5. #5
    Mi sa che prima non avevo capito:

    Tu crei tot righe con prezzo descrizione e cod.Prodotto?

    Se è così,
    puoi creare i tuoi campi indicizzandoli:

    prezzo0, descr0, cod0
    prezzo1, descr1, cod1
    ......

    così riesci ad avere n campi con n nomi diversi, ma con radice identica.

    Spero di avere capito ora.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    Il problema non è la creazione di n righe (questo l'ho già scritto)

    Il mio problema è che il javascript di ricerca del cod_prodotto e prezzo parte quando viene cambiato il campo descrizione[] il problema è che ci sono n campi descrizione[n]

    Considerando che non posso sapere a priori quanti campi descrizione ci saranno non posso mettere descrizione1, descrizione2,...

  7. #7
    Ciao,
    devi gestire su ogni campo descrizione il proprio cambiamento:

    <input type="text" name="descrizione1" id="descrizione1" onblur="prendiindice(this)">

    function prendiindice(elem){
    var indice = elem.id.substring("descrizione".length,elem.id.len gth);
    }

    la variable indice ti serve per prendere i campi associati a quella descrizione:
    var prezzo = document.getElementById("prezzo" + indice);
    var codice = document.getElementById("codice" + indice);

    Ci siamo?
    Ti ho compreso questa volta?

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    GRANDISSIMO!!!!

    Sei stato gentilissimo, veramente!

    Tutto perfetto, ti devo un favore!

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    70
    Ho ancora bisogno di te/voi...

    codice:
    var ind = i.id.substring("prezzo".length,i.id.length);
    
    var prezzo_esatto = document.getElementById("prezzo"+ind).value;
    var quanti_esatto = document.getElementById("quanti"+ind).value;
    
    document.offerta.total1.value = dp(prezzo_esatto*quanti_esatto);
    Come posso fare per indirizzare il contenuto della funzione dp() nell'input name=total1 in caso di i=1, total2 in caso di i=2,...

    Grazie infinitamente!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.