Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    Edit in place, modifica al volo in ajax

    Ho uno script che mi permette di modificare del testo al volo in una pagina; lo trasforma in un'input text e lo salva tramite un secondo file php o asp.

    Quando clicco sul testo,dopo aver modificato la frase, lo script fa il suo dovere ed all'evento onblur (ovvero quando clicco con il tasto su un'altra parte della pagina o quando premo TAB) effettua la modifica.

    Però vorrei che la modifica fosse effettuata anche quando premo invio dopo aver modificato la frase ma se premo invio viene processato il form non effettuando la modifica.

    per semplificare oltre a trascrivere il codice allego il file in formato zip.

    codice:
    <script type="text/javascript" language="javascript">
        var http_request = false;
    
    
        function makeRequest(getvar) {
    
    
            http_request = false;
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    //http_request.overrideMimeType('text/xml');
                    // See note below about this line
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
    
    
            if (!http_request) {
                alert('Giving up :( Cannot create an XMLHTTP instance');
                return false;
            }
            http_request.onreadystatechange = function(){
            scrivi(getvar);
        }
            http_request.open('POST', 'edit2.asp', true);
        http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        postvar="campo="+getvar+"&value="+eval("document.forms.dinamicform."+getvar+".value");
            http_request.send(postvar);
    
    
        }
    
    
        function scrivi(getvar) {
        
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
            document.getElementById(getvar).innerHTML = "<a onclick=\"change(this,'"+getvar+"')\">"+eval("document.forms.dinamicform."+getvar+".value")+"</a>";
            document.getElementById("result").innerHTML = http_request.responseText;
                } else {
                    alert('There was a problem with the request.');
            
                }
            }
    
    
        }
        
        function change(link,textname){
             //link.innerText e link.text sono stessa cosa, c'è differenza tra ie e firefox
        if(link.innerText){testovecchio=link.innerText}else{testovecchio=link.text}
        //riscrivo il contenuto del div
        document.getElementById(textname).innerHTML="<input type='text' autocomplete='off' name='"+textname+"' value='"+testovecchio+"' onBlur=\"makeRequest(\'"+textname+"\')\" > ";
        }
    </script>
    
    
    <form name="dinamicform">
    <div id="Prezzo"><a onclick="change(this,'Prezzo')">Clicca per modificare</a></div>
    </form>
    
    
    <div id="result"></div>
    File allegati File allegati

  2. #2
    codice:
    <form  name="dinamicform" onSubmit="funzione_js('eventuali','parametri'); return false;">
    
    </form>

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Non funziona, avevo già provato in questo modo:

    codice:
    <form name="dinamicform" onsubmit="return false">

    e questo impedisce che la pressione del tasto invio processi il form.

    Io invece vorrei che oltre ad impedire il processo del form, il tasto invio esegua la funzione così come succede sull'evento onBlur.

  4. #4
    Quote Originariamente inviata da Luca1317 Visualizza il messaggio
    Non funziona, avevo già provato in questo modo:

    codice:
    <form name="dinamicform" onsubmit="return false">

    e questo impedisce che la pressione del tasto invio processi il form.

    Io invece vorrei che oltre ad impedire il processo del form, il tasto invio esegua la funzione così come succede sull'evento onBlur.
    Se guardi con attenzione il mio post precedente, prima del "return false" ci ho messo la funzione js, generica, da lanciare.

  5. #5
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Si, dopo aver letto avevo provato con:

    codice:
    <form  name="dinamicform" onSubmit="scrivi(); return false;">

    ma mi impedisce solo il processo del form con invio.

  6. #6
    Quote Originariamente inviata da Luca1317 Visualizza il messaggio
    Si, dopo aver letto avevo provato con:

    codice:
    <form  name="dinamicform" onSubmit="scrivi(); return false;">

    ma mi impedisce solo il processo del form con invio.
    Dovresti lanciare makeRequest e passare il parametro, ovviamente...

  7. #7
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Ho provato in questo modo:
    codice:
    <form  name="dinamicform" onSubmit="makeRequest(); return false;">
    il return false non viene considerato e il form viene processato lo stesso.

  8. #8
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Qualche consiglio su come possa risolvere?

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.