Come faccio a spostare il testo visibile in un elemento di input stretto per vedere il cursore alla fine?

Il problema che sto avendo è dato da un elemento di input con una lunghezza massima molto più ampia della larghezza dell’elemento (come impostato nel suo stile), e, dato un valore che è più largo della larghezza dell’elemento, come posso ottenere l’elemento “scorri” fino alla fine del testo. In IE è facile, creo un object textRange, metto la sua posizione iniziale e finale alla fine del testo, chiamo select su quell’intervallo, e bam, il cursore si trova alla fine del testo E il testo viene spostato in modo tale che viene mostrata la fine. In Firefox, Chrome, Safari, cercando di utilizzare setSelectionRange dell’elemento di input, il cursore si posiziona nella giusta posizione, ma il testo non viene spostato in modo tale che ne vedo la fine, ma invece l’inizio. Qualcuno sa di come potrei posizionare il cursore alla fine del testo E spostando il testo in modo che possa vedere il cursore?

Grazie!

Shane


  input cursor position  function setCursor() { var objInput = document.getElementById( 'testinputbox' ); var nLength = objInput.value.length; objInput.focus(); objInput.setSelectionRange( nLength, nLength ); }       

Dubito che questa sia una grande soluzione cross-browser, tuttavia sembra essere un problema in Firefox. Inizialmente l’ho provato simulando il tasto destro della freccia, ma non ho avuto fortuna.

 function setCursor(id) { var elem = document.getElementById(id); elem.focus(); elem.setSelectionRange(elem.value.length, elem.value.length); // Trigger a "space" keypress. var evt = document.createEvent("KeyboardEvent"); evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32); elem.dispatchEvent(evt); // Trigger a "backspace" keypress. evt = document.createEvent("KeyboardEvent"); evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0); elem.dispatchEvent(evt); } 

Maggiori informazioni su initKeyEvent qui .

È un kludge, ma funziona:

Modifica: ulteriormente confuso per funzionare davvero:

   input cursor position