Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: sostituzione onlick

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    sostituzione onlick

    salve ho una tabella fatta nel seguente modo
    codice:
    <table>
    <tr>
    <td>
    
    
    riga1</p>
    <span>bla</span><span>blu</span>
    </td>
    </tr>
    </table>
    vorrei che al click sul paragrafo questo venga sostituito con
    codice:
    <form><input type="text" value="riga1"></form>
    in pratica al posto del testo deve esserci un campo di testo dello stesso valore (lasciando gli span al posto loro)
    lo scopo chiaramente è rinominare dei file (la parte lato server è già scritta) ci sto sbattendo la testa da un po', sono riuscito solo a nascondere il paragrafo con display:none

    chiaramente sono molto arrugginito in javascript

    ho pensato (solo ora..) che si potrebbe stampare insieme alla tabella anche il form già messo al suo posto,nascosto con display:none, e poi al click sul paragrafo nascondere questo e visualizzare il campo di testo, ma chiedo aiuto perché sono esaurito
    codice:
    <table>
    <tr>
    <td>
    
    
    riga1</p>
    <form><input type="text" value="riga1"></form>
    <span>bla</span><span>blu</span>
    </td>
    </tr>
    </table>

  2. #2
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    nell'onclick del td corrispondente:
    codice:
    this.innerHTML="
    
    Codice HTML da inserire</p>";
    Ricorda che però così sostituirai tutto il codice HTML contenuto in td.

    Oppure puoi mettere il form nel td con display a none e cambiarlo con display block; stesso con il testo originale.
    A volte la soluzione a un problema è sempre la più semplice...

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    volevo evitare di usare innerhtml, ma va bene in mancanza d'altro, solo che ho provato
    codice:
    function input_replace(){
    	this.innerHTML="abc"
    	
    	}
    codice:
    <td><p onclick="input_replace()">entry1</p></td>
    e non va neanche così
    evidentemente il this non va bene usato così, ma individuare con getElementById mi complica la vita molto di più, come posso mantenerlo 'generale'?: se ti clicco devi scoparire e far apparire il campo di testo

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Fai cosi che è meglio:
    codice:
    <table>
    <tr>
    <td onclick="document.getElementById('form1').style.display='block'">
    
    
    riga1</p>
    <form id="form1" style="display:none"><input type="text" value="riga1"></form>
    <span>bla</span><span>blu</span>
    </td>
    </tr>
    </table>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    Originariamente inviato da cavicchiandrea
    Fai cosi che è meglio:
    codice:
    <table>
    <tr>
    <td onclick="document.getElementById('form1').style.display='block'">
    
    
    riga1</p>
    <form id="form1" style="display:none"><input type="text" value="riga1"></form>
    <span>bla</span><span>blu</span>
    </td>
    </tr>
    </table>
    grazie della disponibilità, ma a me servirebbe la parte js

    sono arrivato a questo punto
    codice:
    function input_replace(p,file){
    	p.innerHTML='<form><input type="text" value="'+file+'">';
    	
    	}
    codice:
    <td><p onclick="input_replace(this,'sono il sostituto')">entry1</p>
    sono sicuro che è sbagliata la riga della funzione, non riesco a costruire la stringa, tra apici e doppi apici non esce mai bene (vedendo il sorgente generato)

    edit: ok ho risolto, la stringa funziona, era un problema di css

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    altro piccolo problema:
    quando clicco sul paragrafo questo viene sostituito dal campo di testo (come deve essere), il problema è che se clicco sul campo di testo la funzione onclick precedente viene chiamata di nuovo, rendendomi impossibile la modifica del testo

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    il codice che hai postato non sostituisce il paragrafo con il campo di testo

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    Originariamente inviato da Vindav
    il codice che hai postato non sostituisce il paragrafo con il campo di testo
    perché no?funziona
    codice:
    function input_replace(p,file){
    formexp =/<form/
    if (!formexp.test(p.innerHTML)) p.innerHTML='<form><input name="newname" type="text" value="campo" />';
    }
    ho messo quel controllo per tentare di risolvere il problema del precedente post.
    in pratica devo riuscire a controllare se ho già cliccato sul paragrafo o no.
    con questa regexp improvvisata sembra che funzioni con ff ma non con chrome

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    innerHTML non è supportato da tutti i browser usa mostra/nascondi fidati tanto il risultato è identico.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    Originariamente inviato da cavicchiandrea
    innerHTML non è supportato da tutti i browser usa mostra/nascondi fidati tanto il risultato è identico.
    è la condizione (if(!formexp.test..)) che non funziona in chrome, non la sostituzione del campo di testo
    farò come dici che è sicuramente la soluzione più pulita e poi avevo già detto che preferivo non usare innerhtml, ma, per ora, come posso aggiustare quella condizione?

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.