Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336

    disabilitare invio form con enter da 1 campo

    Ciao a tutti!
    Vorrei che premendo enter in un campo text non partisse il submit del form... ma solo in quel campo, negli altri l'enter dovrebbe restare abilitato!

    Più dettagliatamente:
    Ho un form in cui sono presenti vari campi, fra cui una (o più) select con molte option; per facilitare la ricerca dell'elemento che si vuole selezionare, a fianco della select ho inserito un campo text con uno script che, lettera per lettera, seleziona la option più simile a quanto digitato. Fin qua tutto ok; il fatto è che se uno preme enter in quel campo viene ovviamente inviato il form, mentre vorrei che per quel campo (e solo per quello) non si possa inviare il form se non premendo esplicitamente il bottone (questo perchè, dato che si tratta di un campo "di servizio", che tra l'altro ha altri eventi sull'onchange, può risultare spontaneo per l'utente premere enter per "confermare" la scelta fatta sulla select... e invece parte il submit, probabilmente con tutti i campi sottostanti ancora da inserire.

    Ho pensato a qlcsa tipo:
    codice:
    <input type='text' ... onfocus='nomeForm.pulssubmit.disabled=true' onblur='nomeForm.pulssubmit.disabled=false'
    e funziona ma non è bellissimo da vedere.... soluzioni alternative?

  2. #2
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336

  3. #3
    Ciaoo Dannie

    cosi sembra funzionare..... e non ha fastidiosi eventi antiestetici...

    spero vada bene come spunto. byeee


    <script language="javascript">
    var Vsub = true;
    function controllaTasto(i){
    var id = i.id;
    alert(id);
    if (id=="text1"){
    Vsub = false;
    }else{
    Vsub = true;
    document.forms[0].submit()
    }
    }
    function controllaSubmit(){
    if(Vsub==true){
    return true;
    } else {
    return false;
    }
    }
    </script>
    <form name="form1" id="form1" action="prova.htm" enctype="multipart/form-data" onSubmit="return controllaSubmit();">
    <input type="text" name="text1" id="text1" onKeyDown="controllaTasto(this);">


    <input type="text" name="text2" id="text2" onKeyDown="controllaTasto(this);">


    <input type="button" name="Sform" id="Sform" value="vai" onClick="document.forms[0].submit()">
    </form>

  4. #4

  5. #5
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Ciao e grazie per l'aiuto! Dunque, in realtà così com'è non lo posso usare perchè come accennavo posso avere più di un campo testo da cui non si può fare il submit (e aggiungo che sono creati dinamicamente quindi non li conosco neanche a priori) ma come spunto di partenza è perfetto, potrebbe bastarmi spostare abilitazioni e disabilitazioni sull'onfocus e onblur e ci dovrei essere... appena finito un'altra modifica ci provo! Solo una cosa: non devo mettere il submit del form dentro controllaTasto vero?Altrimenti parte ad ogni tasto premuto su un qualunque altro campo di testo...o no?
    Grazie mille per l'aiuto!!!

  6. #6
    bhe ci, cosi come è messa adesso il submit del form parte da tutti campi non esclusi con l'apposita funzione + dal bottone submit, se le vuoi escludere da tutti tutti tutti e lasciarlo solo nel bottone submit allora è una sciocchezza, basta riscrivere due righe.

    se invece va bene cosi, ma hai solo il problema dei campi che sono generati dinamici, durante la creazione gli fai creare anche la funzione javascript con il riferimento all'oggetto this
    in modo che la funzione avra sempre l'id o cmq il riferimento giusto.

    se non sono stato chiaro dopo ti faccio un esempio.

    Ciaoooo

  7. #7
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Originariamente inviato da pirolisi
    bhe ci, cosi come è messa adesso il submit del form parte da tutti campi non esclusi con l'apposita funzione + dal bottone submit, se le vuoi escludere da tutti tutti tutti e lasciarlo solo nel bottone submit allora è una sciocchezza, basta riscrivere due righe.
    Intendevo dire: cosa succede se digito 'a' nel campo text2? viene scatenato l'evento okeydown, entra nell'else e fa il submit del form giusto? mentre io vorrei richiamare la funzione controllaTasto solo se è stato premuto enter.... se non ricordo male c'era un codice, più tardi provo a cercare...
    :master:
    Per il resto ho capito cosa vuoi dire, posso costruire la stringona del tipo "id=='text1' || id=='text3' id=='text4'" nella jsp che genera l'html e POI scrivere la funzione javascript che la usa....
    Grazie per le idee!!!

  8. #8
    nono... assolutamente

    non fa il submit

    scrive e basta!

    il submit lo fa solo con l'enter...

    provalo, copiati il codice e provalo, vedrai che va bene

  9. #9
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Ah, ok!
    Sto facendo un'altra modifica alla pagina quindi ora come ora è "smontata" però appena l'ho rimessa in sesto metto in pratica i tuoi consigli, grazie!!

  10. #10
    arg... in effetti credo tu abbia ragione

    faceva parte delle prove il document.forms[0].submit()

    lo dovresti togliere

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.