2013-04-17 8 views
9

ho il seguente codice:javascript evitare di default per keyup

$(document).on('keyup', 'p[contenteditable="true"]', function(e) { 
    if(e.which == 13) { 
     e.preventDefault(); 
     $(this).after('<p contenteditable = "true"></p>'); 
     $(this).next('p').focus(); 
    } else if((e.which == 8 || e.which == 46) && $(this).text() == "") { 
     e.preventDefault(); 
     alert("Should remove element."); 
     $(this).remove(); 
     $(this).previous('p').focus(); 
    }; 
}); 

Vorrei evitare che l'azione di default quando si preme un tasto. preventDefault funziona per keypress ma non keyup. C'è un modo per prevenire il defualt per $(document).on('keyup')?

risposta

27

No. keyup si attiva dopo l'azione predefinita.

keydown e keypress dove è possibile impedire l'impostazione predefinita.
Se questi non vengono fermati, viene eseguito il default e viene generato keyup.

1

È possibile impedire l'azione utilizzando il seguente frammento di codice.

e.stopPropagation(); 
     e.preventDefault(); 
     e.returnValue = false; 
     e.cancelBubble = true; 
     return false; 

keyup si attiva dopo il keydown/keypress. possiamo impedire l'azione predefinita in qualcuno di questi eventi.

Grazie,

Siva

+0

E non è la risposta corretta per la domanda posta altrimenti avrei upvote esso; tuttavia apprezzo molto i tuoi sforzi per fornire queste informazioni utili. –

+0

non usare 'keyup', ma usa' keydown' e aggiungi la sua risposta –

Problemi correlati