2013-04-10 16 views
7

So che normalmente il browser gestirà automaticamente la correzione automatica/maiuscole/ecc. Quando l'utente preme Invio. Ma sto usando l'attributo contenteditable e sto facendo qualche trattamento speciale su "enter" che mi richiede di usare evt.preventDefault() quando l'utente preme Invio. Dal momento che sto usando preventDefault() nel mio listener, Safari mobile lascia aperta la bolla di correzione automatica e diventa piuttosto funky dall'aspetto/inutilizzabile. C'è un modo alternativo (magari usando JS per sparare a un evento) per eliminare la bolla o attivare il comportamento normale senza dover eliminare preventDefault?Esiste un modo alternativo per attivare la correzione automatica/il completamento automatico su Safari mobile (su iOS) quando l'utente preme Invio?

Non voglio eliminare la funzionalità di correzione automatica, poiché è importante per la mia applicazione.

+0

Più in generale, quando iOS visualizza una correzione automatica proposta per un valore di input sullo schermo, c'è un modo per ottenere il valore dopo la correzione automatica per l'uso in javascript? – rakslice

+0

Puoi usare 'onfocus'' onblur' etc nel tuo contenteded div. –

risposta

0

Ci dovrebbe essere codice di esempio! ma penso che si parli di qualcosa di simile:

$("#myForm").submit(function(event) { 
    event.preventDefault(); 
    // Do other stuff 
}); 

quindi sono abbastanza sicuro che si potrebbe sparare il .blur -Event manualmente che poteva sparare che autocomplete-funzione:

$("#myForm #myInput").blur(); 

Se questa risposta è sbagliato, si prega di fornire codice di esempio - non tutti su Stackoverflow è un mago.

+0

Non so come fosse il codice del poster originale, ma se ho un gestore 'keypress' con una chiamata' event.preventDefault', aggiungo un 'blur' prima che' event.preventDefault' non venga visualizzato io il testo corretto: http://jsfiddle.net/LGWrJ/ – rakslice

0

devo dire la sua facile con set di messa a fuoco, a differenza di risposta precedente che funziona con presentare il comportamento automatico continuerà a Correzione automatica ..

$("#MyInput").focus(function(event){ 
    event.preventDefault(); 
}); 
$("#MyInput").blur(){ // do events you want on focus lost.. from input.. :) 
}); 

Penso che questo farà ..