Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    "Onsubmit" problematico

    Ciao a tutti, ho un problema con un onsubmit

    Visto che sto modificando un progetto già fatto e devo aggiungere un evento "onsubmit" a tutti i form ho pensato di fare così:

    codice:
        if (window.addEventListener){  //ff
          document.forms[0].addEventListener("submit", controllaFile,false);
        }
        else if (window.attachEvent){  //ie
          document.forms[0].attachEvent("onsubmit",controllaFile);
        }
        else
        {
            document.forms[0].previousLoadFunction = document.forms[0].onsubmit;
            document.forms[0].onload = function()
            {
                document.forms[0].previousLoadFunction();
                return controllaFile();
            }
        }
    Il problema è che la funzione "controllaFile" (che funziona perfettamente) ritorna un valore booleano che mi serve per impedire il submit del form.

    Ora, con IE nessun problema, se inserisco qualche cosa di sbagliato nel form il submit viene bloccato, mentre in FF che utilizza "addEventListener" la funzione viene aggiunta correttamente, ma è come se non ricevesse il "return" dalla controllaFile, e quindi (pur controllando correttamente il form) permette ugualmente il submit

    Avete qualche idea sulla soluzione del problema?

    Grazie
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: non so se questa sia la risposta giusta, ma la cosa interessa pure me. Questo è un esempio:
    codice:
    <%@ Language=VBScript %>
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
    <!--
    
    function window_onload() 
    {
    	var v = document.getElementById("a1");
    	if(v.attachEvent)
    		v.attachEvent("onclick", function(){event.returnValue = ($("Checkbox1").checked)?true:false;});
    	else if(v.addEventListener)
    		v.addEventListener("click", function(e){ ($("Checkbox1").checked)?void(0):e.preventDefault();   } , false);
    		
    }
    
    
    function miafunzione(e)
    {
    	//alert(e.target.id);
    	e.preventDefault();
    }
    
    
    
    function $() {
      var elements = new Array();
    
      for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
          element = document.getElementById(element);
    
        if (arguments.length == 1)
          return element;
    
        elements.push(element);
      }
    
      return elements;
    }
    
    //-->
    </SCRIPT>
    </HEAD>
    <BODY LANGUAGE=javascript onload="return window_onload()">
    
    <input id="Checkbox1" type="checkbox" />
    crea tabella.asp
    
    </BODY>
    </HTML>
    Pietro

  3. #3
    Ho risolto...

    Leggendo qui e là ho scoperto che probabilmente il metodo addEventListener non prevede il recupero del valore di ritorno della funzione aggiunta...quindi ho aggiunto nella funzione chiamata (controllaFile):

    codice:
    if(document.forms[0].addEventListener && !risultato){
      evt.preventDefault();
      evt.stopPropagation();
    }
    In realtà non so se servono entrambe (probabilmente è sufficiente preventDefault()) ma non avevo tempo di andarci per il sottile.

    Se c'è qualche metodo migliore però fatemelo sapere!

    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

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.