2013-04-17 15 views
10

Ho un modulo con un campo di testo all'interno e sto cercando di disabilitare il comportamento predefinito quando il browser invia l'intero modulo se l'utente preme Immettere mentre il campo di testo è selezionato.Disabilita invio Invia

$('#recaptcha_response_field').keydown(function(event) { if (event.keyCode == 13) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    event.stopImmediatePropagation(); 
    alert("You Press ENTER key"); 
    return false; 
    } 
}); 

Attualmente viene visualizzato "Si preme il tasto INVIO" e il comportamento predefinito non viene sovrascritto.

+1

Non usare evento KeyDown di ingresso, usare presentare caso di modulo. –

+1

Duplica http://stackoverflow.com/questions/585396/how-to-prevent-enter-keypress-to-submit-a-web-form Pls fa la tua domanda a google prima di inviarla qui. questo ti avrebbe fornito la domanda originale alla quale è già stata data una risposta approfondita. – iAmClownShoe

+1

'preventDefault' è assolutamente sufficiente. Né è necessario interrompere la propagazione, né restituire false. – Bergi

risposta

20

Prova questo:

$(document).on("keypress", 'form', function (e) { 
    var code = e.keyCode || e.which; 
    if (code == 13) { 
     e.preventDefault(); 
     return false; 
    } 
}); 

Questo consentirà di evitare la forma presentare il keypress

DEMO HERE

+0

Non funziona, continua a reindirizzare – user2288298

+0

l'avvio della chiave dopo l'invio e, pertanto, non è possibile disabilitare il comportamento predefinito poiché è già avvenuto. – iAmClownShoe

+0

@ user2288298 ha aggiornato il codice. prova una volta .. –

2

Se nessuna delle soluzioni sopra sta lavorando per voi, e si sta utilizzando JavaScript in ogni caso, perché non utilizzare il pulsante come "pulsante" <input type='button'> e inviarlo utilizzando javascript

$('#form_id').submit(); 
1

U può utilizzare questo script per impedire l'accesso all'intero da.

<script type="text/javascript"> 
     $(document).on("keypress", 'form', function (e) { 
      if (e.target.className.indexOf("allowEnter") == -1) { 
       var code = e.keyCode || e.which; 
       if (code == 13) { 
        e.preventDefault(); 
        return false; 
       } 
      } 
     }); 
    </script> 

si inserisce il nome di classe per cui il controllo necessario utilizzare entrare

8

Ho trovato questo e funziona per me.

<input type="text" name="somename" id="someid" value="" onkeypress="return event.keyCode!=13"> 
+0

Semplicemente semplice, grazie! –

3

Per impedire allo script di bloccare il tasto Invio su altri elementi, ad esempio su un'area di testo. Cambia il target da "form" a "input".

$(document).on("keypress", "input", function (e) { 
 
    var code = e.keyCode || e.which; 
 
    if (code == 13) { 
 
     e.preventDefault(); 
 
     return false; 
 
    } 
 
});

Problemi correlati