Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281

    [js] lettura campi di input (getElementsByTagName)

    ciao a tutti

    ho usato questo codice (http://www.xaraya.com/index.php/xarbb/topic/269) con le dovute modifiche, per creare die campi input "al volo".

    il problema ora è che non riesco ad leggere tramite js il valore inserito nei campi creati con tale script.

    se uso questo codice per il primo campo visualizzato allora tutto ok
    codice:
    var x = document.getElementById('ciccio').getElementsByTagName('input');
    alert(x[0].value);
    ma se lo uso per i successivi, cioè quelli creati "al volo", ho una variabile vuota.

    qualcuno mi sa aiutare?

  2. #2
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    uppino

  3. #3
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    nessuno nessuno nessuno

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Dovresti dare qualche info in piu`.

    Ad esempio come si chiamano i tuoi campi "creati al volo"?

    Nota che getElementsByTagName() crea una collezione (che puoi leggere con un vettore), ma credo che convenga usare la collezione elements del form.

    Come e` la struttura del form dopo averlo creato?

    La creazione avviene una volta sola, oppure lo script di controllo deve girare assieme allo script che crea?
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    dunque la stuttura sull pagina html è questa:
    codice:
    <div id="attachment" style="display:none">
    <input type="text" name="cod_art" id="cod_art">
    <input type="text" name="descr_art" id="descr_art">
    show
    </div>
    <div id="attachments">
    <a id="addinput" onClick="javascript:addInput('cod_art');" style="cursor:pointer">Inserisci</a>
    
    
    <input type="text" name="cod_art[]" id="cod_art">
    <input type="text" name="descr_art[]" id="descr_art">
    show
    <span id="attachmentmarker"></span>
    </div>
    il file is è il seguente:
    codice:
    //funzione che aggiunge i due campi input del div attachment
    function addInput(fileFieldName){
    nameFile=fileFieldName;
    currentUploads++;
    if (currentUploads>0)
        document.getElementById('addinput').childNodes[0].data='Inserisci';
    var newFields = document.getElementById('attachment').cloneNode(true);
    newFields.id = '';
    newFields.style.display = 'block'; 
    var newField = newFields.childNodes;
    for (var i=0;i<newField.length;i++){
        if (newField[i].name==nameFile){
    	newField[i].id=nameFile+currentUploads;
    	newField[i].name=nameFile+'[]';
        }
    }
    var insertHere = document.getElementById('attachmentmarker');
    insertHere.parentNode.insertBefore(newFields,insertHere);
    }
    
    //funzione di test che viasualizza i valori
    function showValue(){
        var x = document.getElementById('attachments').getElementsByTagName('input');
        alert(x[0].value);
        alert(x[1].value);
    }
    quando richiamo la funzione showValue riferiti ai primi campi che visualizzo in html, mostra il valore inserito.
    Quando aggiungo file di input e clicco su show, vedo sempre i valori riferiti alla prima riga. Non so come visualizzare i valori corrispondenti alla propria

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    nella pagina ci sono due id ripetuti. Questo non e` possibile in HTML. Devi quindi cambiare uno dei due id. Invece i name possono rimanere uguali.

    In alternativa, togli gli id dai campi (non sono obbligatori) ed usa i name (se ce ne e` piu` di uno, si indirizzano con i vettori).
    Invece nei div non puoi usare i name, e devi per forza usare degli id diversi.
    Oppure non usare i div, ma fare solo apparire i campi (cui puoi applicare il display invece che ai div).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.