2012-02-13 10 views
5

In un inserimento di testo, se il testo esiste, e si fa clic per aggiungere più il cursore salta automaticamente all'inizio. Sembra che accada solo in IE.IE: salto del cursore per iniziare nell'ingresso

Ho cercato su Google per un po 'di tempo e ho provato un sacco di esempi che ho trovato, ma niente sembra funzionare. Sfortunatamente, l'input è scritto in un jsp su cui non ho il controllo e penso che l'unico motivo per cui ho questo problema è perché c'è del codice javascript nel codice.

<input type="text" id="simpleSearchString" class="text" onfocus="javascript:this.value=this.value.replace(/^\s+|\s+$/g,'')" onblur="javascript:this.value=this.value.replace(/^\s+|\s+$/g,'')" value="" maxlength="255" name="searchCriteria.simpleSearchString"> 

Tutto ciò che voglio fare è rimuovere questo salto.

ho pensato di aggiungere il seguente codice avrebbe aiutato, ma non sembrava di fare nulla:

jQuery("input#simpleSearchString").focus(); 

Sono sicuro al 100% che cosa dev stanno cercando di raggiungere con il 'javascript: questo .. . etc ', ma forse potrei trovare un modo per rimuoverlo.

+0

Le espressioni regolari sono strippaggio conduzione/spazio vuoto iniziale dal campo. Molto probabilmente questo fa saltare il cursore, poiché IE assume che il contenuto sia cambiato e invalida la vecchia posizione del cursore. –

+0

Che ne dici di rimuovere 'onfocus' e' onblur' dall'elemento di input? questo potrebbe facilmente essere fatto con jQuery. –

+0

Grazie Marc B, ho appena scoperto che questo javascript è stato messo in atto come qualsiasi spazio bianco iniziale o finale stava influenzando i risultati di una ricerca. Dal jsp posso vedere che usa qualcosa chiamato Gillian

risposta

2

Potresti uccidere quegli eventi in linea e collegarli da soli;

var el = $("#simpleSearchString"); 
el[0].onfocus = el[0].onblur = null; 

$(el).on("focus blur", function(e) { 
    this.value = $.trim(this.value);  
    if ((e.type === "focus") && this.createTextRange) { 
     var r = this.createTextRange(); 
     r.moveStart("character", this.value.length); 
     r.select(); 
    } 
}); 

(Ciò assume il suo solo IE che richiede di riposizionare il cursore)

+0

ha funzionato a meraviglia! grazie mille. non hai idea di quanto sia stato fastidioso. – Gillian

+0

Ciao, ho lo stesso problema e ho usato questa soluzione; salva il cursore dal saltare sulla messa a fuoco iniziale, ma se l'utente fa clic all'interno dell'input salterà comunque all'inizio. Hai una soluzione per caso? – nocarrier

+0

Questo ha risolto il problema in cui IE avrebbe cambiato la posizione del cursore per indicizzare 0 dopo aver digitato qualcosa, quindi aver fatto nuovamente clic sulla casella di testo. – Moulde